簡體   English   中英

Postgres - 觸發后刪除記錄

[英]Postgres - delete record after trigger

我有一個帶有一些觸發器的 postgres 表,如果記錄被更新或刪除,這些觸發器就會觸發。 他們基本上將記錄存檔,因此它們不會被真正刪除 - 它們只是更改某些屬性,因此記錄不會顯示在相應的視圖中。

有時我想手動刪除一條記錄,但我不能這樣做,因為觸發器會觸發並且如果我執行 DELETE 查詢就會這樣做。

示例: DELETE FROM records WHERE operator = 20

有沒有辦法運行 DELETE 查詢並繞過在 DELETE 上觸發的觸發器?

通過這樣的設置,我認為典型的方法是避免授予對基礎表的任何直接權限,並將您的INSERT / UPDATE / DELETE觸發器放在視圖上(允許表所有者根據需要更改它)。

如果您是表所有者,則可以使用ALTER TABLE臨時DISABLE和重新ENABLE觸發器。 只要您在事務中執行所有這些操作,您就可以安全地避免並發DELETE ,盡管它們會阻塞直到您的事務提交。

如果您擁有超級用戶權限,還可以通過將session_replication_role設置為replica來防止觸發器觸發,前提是相關觸發器尚未配置為在復制數據庫上觸發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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