如何在 postgres 上强制执行软删除?

How to enforce soft deletes on postgres?

我想防止在 Postgres 数据库中的 table 上删除 sql 行,以确保除了软删除之外没有其他删除行的方法,软删除实际上是更新到被软删除的行的 "active" 列。

这可以使用 Postgres sql 规则来实现还是有其他方法??

感谢代码示例。

revoke

revoke update on the_table 
from public, another_role [cascade | restrict]

以下作品:

CREATE OR REPLACE FUNCTION enforce_soft_delete() RETURNS VOID AS $$ 
BEGIN 
RAISE EXCEPTION 'only soft deletes allowed'; 
END; 
$$ LANGUAGE plpgsql; 


CREATE OR REPLACE RULE prevent_account_deletion AS ON DELETE 
TO account 
DO INSTEAD SELECT enforce_soft_delete();