0
假设我有两个表,分别为a
和b
,它们都有两行int
和date
。我想写一个触发器,当从表a
删除行时,将它们复制到表b
,并将日期更改为当前日期。因此,如果我今天从表a
中删除了13, 2015-01-01
行,则13, 2015-06-08
被插入表b
。 关于如何完成此任务的任何想法?触发器在Postgresql中插入已删除的行
假设我有两个表,分别为a
和b
,它们都有两行int
和date
。我想写一个触发器,当从表a
删除行时,将它们复制到表b
,并将日期更改为当前日期。因此,如果我今天从表a
中删除了13, 2015-01-01
行,则13, 2015-06-08
被插入表b
。 关于如何完成此任务的任何想法?触发器在Postgresql中插入已删除的行
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
中的列被称为id
和when
,并且在B
中它们被称为aid
和awhen
。
您可以通过具有PK的类型串行B
解决B
主键的问题,或者,如果你只想要一个在B
具有相同id
从A
行与触发器从B
删除时新行插入A
。
非常感谢,我唯一不知道的就是'old.id'部分。 – eilchner
你有什么试过?你所描述的听起来不难,所以我不清楚究竟是什么给你带来麻烦。 –
我有一个功能的问题。我不知道删除的行是否存储在某个地方,我可以从中复制它们。我曾想过制作一张临时表格,我可以改变日期,但就是这样。 – eilchner
发布你的函数的代码。 –