是否可以只允许那些DELETE
条件中包含WHERE
条的查询?
我已尝试使用RULE
,但我无法弄清楚要放入什么WHERE
条款,此时此{{1}禁用所有RULE
个查询:
DELETE
修改
从用户撤消删除访问权限以及为调用create rule prevent_delete_all as on DELETE to site
DO INSTEAD NOTHING
创建存储过程的问题是,我不想重写使用数据库的应用程序代码
答案 0 :(得分:0)
正如评论中所讨论的,在所有删除语句中要求WHERE子句并不会有多大帮助。问题是用户总是可以声明一个始终为true的WHERE子句 - 例如:
Delete from students where 1=1;
我之前曾试图检测这样的条款 - 而且它们可能是任意复杂的,所以如果不是不可能的话,一直检测它们是非常困难的。
相反,我建议您重新考虑一下您要做的事情。一些替代方案可能是:通过对数据进行版本控制来记录表的所有更改,或者禁止删除任何行,只需修改应用程序以通过添加“已删除”来删除行。列。