我有一组不同的表,它们在DELETE上都有一个触发器。我想将已删除的行写到不同架构的like表中。
例如,说我有几个不同的表:
CREATE TABLE A (val1 TEXT, val2 TEXT)
CREATE TABLE B (someval1 INT, someval2 TEXT, someval3 TEXT)
而且我在某些其他方案上有这些相同表的副本
CREATE SCHEMA backup;
CREATE TABLE backup.A (like A);
CREATE TABLE backup.B (like B);
[每个非备份表A和B都有一个删除触发器(以plpgsql编写)。如果我从这两个表中的任何一个表中删除一条记录,如何编写将删除的记录写入关联的备份表中的触发器函数?
您确实可以使用触发器来做到这一点。每个表需要一个触发器,例如:
create or replace function func_backup_tablea_before_delete()
return trigger as
$body$
begin
insert into backup.tablea(val1, val2) values (old.val1, old.val2);
end;
$body$
create trigger trg_delete_a
before delete on tablea
for each row
execute procedure func_backup_tablea_before_delete;