[英]Is it possible to disable delete all query in Postgres?
是否可以只允許那些在其中包含WHERE
子句的DELETE
查詢?
我已經嘗試使用RULE
,但我無法弄清楚要放入什么內容的WHERE
子句,現在這個RULE
禁用所有DELETE
查詢:
create rule prevent_delete_all as on DELETE to site
DO INSTEAD NOTHING
編輯
從用戶撤消刪除訪問並創建調用DELETE
存儲過程的問題是我不想重寫使用DB的應用程序代碼
正如在注釋中所討論的那樣,在所有delete語句中要求WHERE子句並沒有多大幫助。 問題是用戶總是可以聲明一個始終為true的WHERE子句 - 例如:
Delete from students where 1=1;
我之前試圖檢測這樣的條款 - 它們可以是任意復雜的,所以一直檢測它們是非常困難的,如果不是不可能的話。
相反,我建議你重新考慮你想要做的事情。 一些替代方案可能是:通過對數據進行版本控制來記錄表的所有更改,或者禁止刪除任何行,只需通過添加“已刪除”列修改應用程序以將行標記為已刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.