如何在 postgres 上强制执行软删除?
How to enforce soft deletes on postgres?
我想防止在 Postgres 数据库中的 table 上删除 sql 行,以确保除了软删除之外没有其他删除行的方法,软删除实际上是更新到被软删除的行的 "active" 列。
这可以使用 Postgres sql 规则来实现还是有其他方法??
感谢代码示例。
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();
我想防止在 Postgres 数据库中的 table 上删除 sql 行,以确保除了软删除之外没有其他删除行的方法,软删除实际上是更新到被软删除的行的 "active" 列。
这可以使用 Postgres sql 规则来实现还是有其他方法??
感谢代码示例。
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();