簡體   English   中英

BEFORE 和 AFTER 觸發器,FOR EACH ROW 和 FOR EACH STATEMENT 觸發器

[英]BEFORE and AFTER triggers, FOR EACH ROW and FOR EACH STATEMENT triggers

我是 sql 新手,尤其是 postgresql 新手,我正在為大學學習它,但我無法理解什么時候應該使用 AFTER TRIGGERS 而不是 BEFORE TRIGGERS 以及什么時候應該讓我的觸發器成為 FOR EACH ROW TRIGGER或 FOR EACH 語句觸發器。

據我了解,每次約束具有計數、總和、平均值或取決於與整個表相關的屬性時,我應該使用 AFTER TRIGGER 和 FOR EACH STATEMENT 但我不確定,老實說我很漂亮使困惑。

對於我應該何時使用每種類型的觸發器,或者如何理解我何時應該選擇一個而不是其他觸發器,你有什么建議嗎?

謝謝!

如果要在數據寫入數據庫之前對其進行修改,請使用BEFORE觸發器FOR EACH ROW

如果您需要已經完成數據修改,則使用AFTER觸發器,例如,如果您要插入通過外鍵約束引用這些數據的行。

如果您需要自己處理,則使用FOR EACH ROW觸發器,如果​​處理的實際行與您無關(例如,您想為語句編寫審計日志條目)或您想要處理,則使用FOR EACH STATEMENT訪問整個修改過的數據(例如,如果有人試圖用一條 SQL 語句刪除超過 10 行,則拋出錯誤)。

暫無
暫無

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

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