Postgres触发器:将旧记录写入新表

问题描述 投票:0回答:1

我有一组不同的表,它们在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编写)。如果我从这两个表中的任何一个表中删除一条记录,如何编写将删除的记录写入关联的备份表中的触发器函数?

postgresql plpgsql database-trigger
1个回答
0
投票

您确实可以使用触发器来做到这一点。每个表需要一个触发器,例如:

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;
© www.soinside.com 2019 - 2024. All rights reserved.