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

时间:2017-01-19 15:52:01

标签: sql postgresql constraints rule soft-delete

我想防止在Postgres数据库中的表上删除sql行,以确保除了软删除之外没有其他方法可以删除行,这实际上是对" active&#34的更新;该行的列被软删除。

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

感谢代码示例。

2 个答案:

答案 0 :(得分:1)

以下作品:

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();

答案 1 :(得分:0)

revoke

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