我正在尝试从“student”表中删除一条记录,在 Cascade delete 中,它将从“entry”表中删除它。但在删除之前,我需要将此记录存储在第三个表“取消”中。
这是我到目前为止的工作:
DELETE FROM "CMPS".student
WHERE sno = '1';
CREATE TRIGGER canceled BEFORE DELETE
ON entry
FOR EACH ROW
EXECUTE PROCEDURE trigger_backup_row
CREATE OR REPLACE FUNCTION trigger_backup_row(integer)
RETURNS trigger AS
$$
BEGIN
INSERT INTO cancel (eno, excode, sno) values (NEW.eno, NEW.excode, NEW.sno);
RETURN NEW;
END;
$$
language PLPGSQL
但是回来了一个错误。任何帮助都感激不尽。
我想你需要:
CREATE OR REPLACE FUNCTION trigger_backup_row()
RETURNS trigger AS
$$
BEGIN
INSERT INTO cancel (eno, excode, sno) values (OLD.eno, OLD.excode, OLD.sno);
RETURN OLD;
END;
$$
language PLPGSQL
;
CREATE TRIGGER canceled BEFORE DELETE
ON entry
FOR EACH ROW
EXECUTE PROCEDURE trigger_backup_row()
;
NEW
行 - 只有OLD
一个本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句