PostgreSQL触发器无法正常工作 – 既不是BEFORE也不是AFTER DELE
我刚刚离开
MySQL而支持PostgreSQL,我对触发器有疑问.如果在“进程”表中删除了一行,则此触发器用于更新“工作流”表中的字段.
CREATE OR REPLACE FUNCTION fn_process_delete() RETURNS TRIGGER AS $$ BEGIN UPDATE workflow SET deleted_process_name = OLD.process_name WHERE process_id = OLD.process_id; RETURN NULL; END; $$LANGUAGE plpgsql; DROP TRIGGER IF EXISTS process_delete ON processes; CREATE TRIGGER process_delete AFTER DELETE ON processes FOR EACH ROW EXECUTE PROCEDURE fn_process_delete(); 我的问题是双重的: >如果我如上所述使用AFTER DELETE,则该行将被删除,但update语句不会更新“workflow”表中的字段. 任何人都可以建议吗?
问题2:
您的触发器功能以: RETURN NULL; 这样就可以跳过触发事件的执行. Per documentation on trigger procedures:
您需要将其替换为: RETURN OLD; 让系统继续删除行.原因如下:
大胆强调我的. 问题1 我认为你的触发器和触发器功能不应该像AFTER DELETE那样工作.毫无疑问,表工作流中必须存在具有匹配process_id的行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |