我的restrictions
PostgreSQL数据库中有一个小表(约10行),每天都会删除和插入值。
我想要一个名为的表restrictions_deleted
,将从中删除的每一行都restrictions
将被自动存储。由于restrictions
具有序列号,因此不会重复。
如何在PostgreSQL中编写这样的触发器?
我的restrictions
PostgreSQL数据库中有一个小表(约10行),每天都会删除和插入值。
我想要一个名为的表restrictions_deleted
,将从中删除的每一行都restrictions
将被自动存储。由于restrictions
具有序列号,因此不会重复。
如何在PostgreSQL中编写这样的触发器?
Answers:
您只需要restrictions_deleted
在删除旧数据之前将其移到表中即可。这是通过OLD
数据类型完成的。您可以使用regulat INSERT
语句,然后将这些OLD
值用作要插入的值。
CREATE TRIGGER moveDeleted
BEFORE DELETE ON restrictions
FOR EACH ROW
EXECUTE PROCEDURE moveDeleted();
CREATE FUNCTION moveDeleted() RETURNS trigger AS $$
BEGIN
INSERT INTO restrictions_deleted VALUES(OLD.column1, OLD.column2,...);
RETURN OLD;
END;
$$ LANGUAGE plpgsql;
create function
需要在之前调用create trigger
。而VALUES((OLD).*)
通过KayEss建议伎俩是好的。
VALUES((OLD).*)