的語法應該如下:
DELIMITER $$ /* if you're not using an editor, you must change the delimiter*/
CREATE
TRIGGER ai_jos_dhruprofile_each
AFTER INSERT
ON jos_dhruprofile
FOR EACH ROW
BEGIN
UPDATE jos_users
SET jos_users.department = NEW.department
WHERE jos_users.id = NEW.uid; /*<<<--- ; after every stament */
END $$ /* changed delimiter after the end */
DELIMITER ; /*make sure you set the delimiter back to the default*/
注意的命名方案觸發
我建議命名你的觸發器ai
(意思是after insert
),所以你知道它什麼時候觸發哪張桌子,而不是一個毫無意義的名字,如:db_dhruniversity.trigger1
。
我總是使用[A/B] + [d/I/U] _tablename_each作爲triggername,這樣我總是知道何時觸發器觸發(前/後)其事件(插入/刪除/更新)和哪個表。
還有一個很好的做法是記錄觸發器在each
行上觸發,因此在觸發器名稱末尾觸發each
。
請注意,MySQL不支持觸發器,每個語句觸發一次但(但這可能會在將來改變)。
你能顯示編譯錯誤信息嗎? – heximal