Postgresql删除涉及两个表的记录并将此记录存储在第三个记录中

时间:2017-12-12 03:10:07

标签: sql postgresql plpgsql database-trigger

我尝试删除表格中的记录'学生',在Cascade删除的地方,它会将其从'条目中删除?表。但在删除之前,我需要将此记录存储在第三个表格中,取消'。

这是我到目前为止所做的工作:

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    

但回来时有错误。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我想你需要:

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