Mysql

使用多個觸發器是否正常?

  • April 6, 2012

我在整個數據庫中有許多所謂的匯總列來計算其他表中的行數。例如,計算使用者的評論數(使用者表中的一列)。目前,我通過一個額外的查詢來更新此列:

UPDATE user_table SET comments = comments + 1 WHERE user_id='x'

現在我想介紹Triggers我的數據庫而不是執行第二個查詢。每列兩個Triggers:一個 DELETE 和一個 INSERT。然後,我將有 30 - 40 Triggers

基準測試表明,使用Triggers比執行第二個查詢快約 50%。顯然,使用 mysql 的現代特性是合理的。但是,我問這個問題的原因是許多程序員強烈反對Triggers,因為它使編碼變得模糊。此外,添加很多Triggers可能會造成Information_Schema混亂。

我在正確的軌道上嗎?

觸發器的主要問題是:

a) 它們很難調試

b)觸發器級聯對您的數據庫可能是致命的 - 例如,如果您在一個表中有一個更新後觸發器,它更新另一個表,該表也有一個更新後觸發器,那麼您將遇到很多問題

幾個問題:

a) 在您的應用程序中使用“計算”摘要的頻率如何?

b) “計算”摘要需要多久更新一次?

c) 您是否考慮創建一個“報告”表,該表會定期更新您需要的主要“計算”?

引用自:https://dba.stackexchange.com/questions/16152