将Postgres触发器功能写入INSERT
进入"复制" INSERT
在" Main"上的表格表。并且在" Main"上进行DELETE
操作桌子,我设置' isdeleted' #34;复制"表格为真。但是,在插入冲突中,我希望更新"复制"表和'#de;删除'旗。尝试使用ON CONFLICT(id) DO UPDATE
似乎只是更新" Main"表格并没有工作"复制"表。 '请将isDeleted'不属于" Main"表。触发" Main"表格为AFTER INSERT
和BEFORE DELETE
。
是否有人知道如何更新另一张冲突表?
BEGIN
IF (TG_OP = 'INSERT')
THEN
INSERT INTO copy_table (id,isdeleted)
(
SELECT
new.id,
FALSE
)
ON CONFLICT (id) DO NOTHING;
*/ UPDATE copy_table --TRYING TO MAKE THIS WORK
SET isdeleted = FALSE
WHERE new.sfid = sfid; */
RETURN new;
ELSEIF (TG_OP = 'DELETE')
THEN
UPDATE copy_table
SET
isdeleted = TRUE
WHERE old.id= id;
RETURN old;
END IF;
END;
答案 0 :(得分:1)
ON CONFLICT部分中的UPDATE指的是与INSERT相同的表,以及被拒绝的行。因此,您可以使用简单的:
IF (TG_OP = 'INSERT')
THEN
INSERT INTO copy_table (id, isdeleted)
VALUES (new.id, FALSE)
ON CONFLICT (id) DO
UPDATE SET isdeleted = FALSE;
RETURN new;
END IF;