這是我的創建觸發器。我希望當插入vhftofass它執行這個查詢(更新vhf_msg_rx SET msg_text =「」;)這意味着它使空表這個表vhf_msg_rx.But當我寫插入查詢後查詢它使錯誤(無法更新表'vhf_msg_rx'在存儲函數/觸發,因爲它已經被用於通過調用這個存儲函數/觸發聲明。)請幫助我,我怎麼能做到這一點Mysql觸發器創建錯誤
CREATE
/*!50017 DEFINER = 'root'@'localhost' */
TRIGGER `VHFtoFASS` AFTER UPDATE ON `vhf_msg_rx`
FOR EACH ROW BEGIN
INSERT INTO vhftofass SELECT NULL,msg_text,NOW(),0 FROM vhf_msg_rx WHERE msg_text<>"";
END;
$$
http://stackoverflow.com/questions/1582683/mysql-trigger-stored-trigger-is-already-used-by-statement-which-invoked-stored-t –
如果你插入'vhftofass'每次更新'vhf_msg_rx'時,爲什麼需要在每個*場合的後一個表中插入每個非空的'msg_text'?如果'NEW.msg_text'現在是非空的,那麼只需將新更新的記錄插入'vhftofass'就足夠了?這將避免必須從鎖定的表讀取。 – eggyal
正如你發現的那樣,在MySQL中,你不能修改分配給該表的更新觸發器中的表 - 可能是爲了避免必須處理這可能意味着的遞歸。描述你在這裏做什麼,可能有辦法用BEFORE觸發器做。 –