MySQL 錯誤:儲存函數/觸發器中禁止更新
當嘗試更新 MySQL儲存函數或觸發器中的表時,您可能會遇到以下情況:遇到錯誤:
Error: Can't update table 'brandnames' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
理解錯誤
此錯誤源自於MySQL中的限制,即禁止在執行INSERT 觸發器時修改表。此類修改可能會導致死鎖或無限遞歸循環。
避免錯誤
要避免此錯誤,請考慮以下方法:
使用新舊欄位:
修改觸發器上下文:
使用BEFORE INSERT 的範例觸發器:
假設您有一個full_brand_name 字段,並且需要建立一個包含前兩個大寫字母的Short_name 欄位:
CREATE TRIGGER `capital` BEFORE INSERT ON `brandnames` FOR EACH ROW BEGIN SET NEW.short_name = CONCAT(UCASE(LEFT(NEW.full_brand_name,1)) , LCASE(SUBSTRING(NEW.full_brand_name,2))) END
以上是為什麼我無法更新 MySQL 儲存函數或觸發器內的表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!