假设我有两个表scores = (from r in ds.Tables[0].AsEnumerable()
select new ExternalScoreModel
{
Score = Convert.ToInt32(r[0]),
FirstName = r[1].ToString(),
LastName = r[2].ToString(),
}).OrderByDescending(x => x.Score).ToList();
和a
,它们都有两行b
和int
。我想编写一个触发器,在删除表date
中的行时,将它们复制到表a
,并将日期更改为当前日期。因此,如果我今天从表b
删除了13, 2015-01-01
行,a
会插入到表13, 2015-06-08
中。
关于如何完成这项工作的任何想法?
答案 0 :(得分:4)
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
。
您可以通过在序列类型的B
中使用PK来解决B
的主键问题,或者,如果您只想在B
中使用相同的行,则可以解决id
的主键问题来自A
的{{1}},当B
插入新行时触发器从A
删除。