2
OK。所以我有这2个查询。都做同样的事情:PostgreSQL通过UPDATE/INSERT查询返回受影响的行
1)如果配置文件已经存在,那么只有当配置文件不存在,然后创建一个新的配置文件
限制更新使用新的信息 2)简介: 1)用户名是唯一的(不能是重复的) 2)user_id是唯一的(不能重复)
我试图从服务器获取布尔响应,所以我的应用程序可以检查查询是否被有效执行并且行受到影响。例如,如果用户想要更改其用户名,但他选择的用户名已被使用,则查询将不会执行,因此不会影响行。我需要某种返回(受影响的行数?)或真/假告诉我一行是否受到影响?
我是新来的postgreSQL,我非常感谢任何形式的帮助。谢谢=) 问候何塞·玛丽亚·兰达=)
UPDATE people.profile SET profile_picture='test_profile_picture_url', alias='test_username' WHERE
user_id='test_user_id'
AND NOT EXISTS (SELECT 1 FROM people.profile WHERE alias = 'test_username' AND user_id NOT LIKE 'test_user_id');
INSERT INTO people.profile (user_id, profile_picture, alias)
SELECT 'test_user_id', 'test_profile_picture_url', 'test_username'
WHERE NOT EXISTS (SELECT 1 FROM people.profile WHERE user_id = 'test_user_id' OR alias = 'test_username');
DO
$do$
BEGIN
IF EXISTS (SELECT 1 FROM people.profile WHERE user_id='test_user_id'
AND NOT EXISTS (SELECT 1 FROM people.profile WHERE alias = 'test_username' AND user_id NOT LIKE 'test_user_id'))
THEN
-- UPDATE PROFILE INFO
UPDATE people.profile SET profile_picture='test_profile_picture_url', alias='test_username' WHERE
user_id='test_user_id'
AND NOT EXISTS (SELECT 1 FROM people.profile WHERE alias = 'test_username' AND user_id NOT LIKE 'test_user_id');
ELSE
-- CREATE NEW ACCOUNT
INSERT INTO people.profile (user_id, profile_picture, alias)
SELECT 'test_user_id', 'test_profile_picture_url', 'test_username'
WHERE NOT EXISTS (SELECT 1 FROM people.profile WHERE user_id = 'test_user_id' OR alias = 'test_username');
END IF;
END
$do$
谢谢你!!!那没有把戏好!为什么我以前没有想过?你真的帮助我。再次感谢!!! –