对于安全敏感的设计,我想在某些表上禁用删除
DELETE只应在一行上设置一个deleted标志(该标志将在视图上可见,应用层将使用该标志)
据我所知,规则会生成额外的查询,因此规则无法抑制原始查询
如图所示,一个带有触发器的玩具示例(尚未测试):
--此表中的数据应为“不可删除”
创建表格项目(
id序列号,
内容文本不为空,
删除的布尔值默认值为false
)
--某些视图仅显示未删除的文章
...
--玩具触发器(未测试)
创建或替换函数suppress\u article\u delete()
将触发器返回为$sad$
开始
如果(TG_OP='DELETE'),那么
更新文章选择id、内容、TRUE;
--新的还是空的??
归还新的;
如果结束;
返回NULL;
终止
$sad$语言plpgsql;
抑制删除的好方法是什么
据我所知,规则会生成额外的查询,因此规则无法抑制原始查询
不是真的-它可能是一个规则:
在删除时创建规则shoe\u del\u protect AS,以shoe DO代替NOTHING;
(手册同一页上的示例)
另一种方法是REVOKEdelete有关表的特权,并创建用于删除的存储过程。。。也可能是更新和插入