【发布时间】:2017-11-30 16:57:06
【问题描述】:
我正在尝试通过以下方式更新表,并获得了预期的 unique_violation 异常
my.db=# UPDATE my_table SET code = REPLACE(code, ‘abd’, ‘abc’);
ERROR: duplicate key value violates unique constraint "my_table_pkey"
DETAIL: Key (code, group_id)=(abc, 1) already exists.
我知道如果它导致此异常,我需要删除不正确的行而不是更新它,所以我正在尝试编写类似以下的内容
DO $$
BEGIN
UPDATE my_table SET code = REPLACE(code, ‘abd’, ‘abc’);
EXCEPTION
WHEN unique_violation THEN
DELETE FROM my_table WHERE code = ‘abd’ AND group_id = ?;
END $$;
如何仅删除导致引发异常的行并确保我的更新继续在所有其他条目上运行?
【问题讨论】:
标签: sql postgresql exception sql-delete