我有一個普通的AFTER UPDATE觸發器來檢查我的用戶表是否已經更改了列,如果是,請調用存儲過程。MYSQL觸發器遞歸規避
問題是存儲過程做了一些計算並自己更新了用戶中的字段。
如果我的存儲過程更新了調用觸發器的用戶表,它將再次調用存儲過程,我該如何避免遞歸?
謝謝!
我有一個普通的AFTER UPDATE觸發器來檢查我的用戶表是否已經更改了列,如果是,請調用存儲過程。MYSQL觸發器遞歸規避
問題是存儲過程做了一些計算並自己更新了用戶中的字段。
如果我的存儲過程更新了調用觸發器的用戶表,它將再次調用存儲過程,我該如何避免遞歸?
謝謝!
MySQL不會讓您禁用觸發器(不刪除和重建它們),但你有兩個選擇:
對於#3,最好使用會話變量(即'@ var'而不是'@@ var')。你甚至可以使用它,當它檢測到發生遞歸時關閉(即,在觸發器和proc中,保護'IF IFNULL(@unique_recurse_var,0)= 0中的潛在遞歸代碼THEN SET @unique_recurse_var = 1; <做保護操作>; ELSE SET @unique_recurse_var = 0; END IF;')。你可能想要單位測試,以確保功能永遠不會中斷。 – CSTobey
想知道mysql允許它:-S – zerkms