簡體   English   中英

可以在Postgres中禁用刪除所有查詢嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM