2015-06-08 67 views
0

假设我有两个表,分别为ab,它们都有两行intdate。我想写一个触发器,当从表a删除行时,将它们复制到表b,并将日期更改为当前日期。因此,如果我今天从表a中删除了13, 2015-01-01行,则13, 2015-06-08被插入表b。 关于如何完成此任务的任何想法?触发器在Postgresql中插入已删除的行

+0

你有什么试过?你所描述的听起来不难,所以我不清楚究竟是什么给你带来麻烦。 –

+0

我有一个功能的问题。我不知道删除的行是否存储在某个地方,我可以从中复制它们。我曾想过制作一张临时表格,我可以改变日期,但就是这样。 – eilchner

+0

发布你的函数的代码。 –

回答

3
create or replace function a_adr_tf() returns trigger as $$ 
begin 
    insert into b(aid, awhen) values (old.id, now()); 
    return old; 
end; 
$$ language plpgsql; 

create trigger a_adr after delete from a for each row execute procedure a_adr_tf(); 

请注意,此触发器不会处理表b中可能的重复主键。我假设A中的列被称为idwhen,并且在B中它们被称为aidawhen

您可以通过具有PK的类型串行B解决B主键的问题,或者,如果你只想要一个在B具有相同idA行与触发器从B删除时新行插入A

+0

非常感谢,我唯一不知道的就是'old.id'部分。 – eilchner