我正在執行 MySQL 查詢。但是,當從表單輸入新增行時,我收到此錯誤:
Error: Can't update table 'brandnames' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
從程式碼:
CREATE TRIGGER `capital` AFTER INSERT ON `brandnames` FOR EACH ROW UPDATE brandnames SET bname = CONCAT( UCASE( LEFT( bname, 1 ) ) , LCASE( SUBSTRING( bname, 2 ) ) )
這個錯誤是什麼意思?
正確的語法是:
當
INSERT
觸發器觸發時,您無法變更表。INSERT
可能會執行一些鎖定操作,這可能會導致死鎖。此外,從觸發器更新表將導致相同觸發器在無限遞歸循環中再次觸發。這兩個原因都是 MySQL 阻止您這樣做的原因。但是,根據您想要實現的目標,您可以使用
NEW.fieldname
存取新值,甚至可以使用舊值 - 如果執行UPDATE
-- 與OLD
。如果您有一個名為
full_brand_name
的行,並且您想要在small_name
欄位中使用前兩個字母作為短名稱,您可以使用: