Ada*_*tan 21 postgresql trigger delete plpgsql
我的restrictionsPostgreSQL 数据库中有一个小(约 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 次 |
| 最近记录: |