我在我的 PostgreSQL 数据库中调用了一个小型(约 10 行)表restrictions
,每天都会在其中删除和插入值。
我想要一个名为 的表restrictions_deleted
,其中删除的每一行restrictions
都会自动存储。因为restrictions
有序列号,所以不会有重复。
如何在 PostgreSQL 中编写这样的触发器?
我在我的 PostgreSQL 数据库中调用了一个小型(约 10 行)表restrictions
,每天都会在其中删除和插入值。
我想要一个名为 的表restrictions_deleted
,其中删除的每一行restrictions
都会自动存储。因为restrictions
有序列号,所以不会有重复。
如何在 PostgreSQL 中编写这样的触发器?
您只需将旧数据移动到
restrictions_deleted
表中,然后再将其删除。这是通过OLD
数据类型完成的。您可以使用规则INSERT
语句并将OLD
值用作要插入的值。如果您对不同的方法持开放态度,您是否考虑将“已删除”布尔标志添加到表中,或者改为“已删除”时间戳。
或者更好的是,拒绝 CRUD 访问您的数据库表并在您的事务 API 中处理审计跟踪 :)