Ada*_*tan 21 postgresql trigger delete plpgsql
我的restrictions
PostgreSQL 数据库中有一个小(约 10 行)表,其中每天删除和插入值。
我想要一个名为 的表restrictions_deleted
,从中删除的每一行都restrictions
将自动存储。由于restrictions
具有序列号,因此不会有重复项。
如何在 PostgreSQL 中编写这样的触发器?
DrC*_*sos 18
您只需要在旧数据restrictions_deleted
被删除之前将其移动到表中。这是通过OLD
数据类型完成的。您可以使用regulatINSERT
语句并将这些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;
Run Code Online (Sandbox Code Playgroud)
如果您对不同的方法持开放态度,您是否考虑过向表中添加“已删除”布尔标志,或者改为添加“已删除”时间戳。
或者更好的是,拒绝 CRUD 访问您的数据库表并在您的事务 API 中处理审计跟踪 :)
归档时间: |
|
查看次数: |
14945 次 |
最近记录: |