2012-05-16 125 views
-1
CREATE TRIGGER `lastedited` AFTER UPDATE ON `eng-jap` 
FOR EACH ROW 
BEGIN 
UPDATE `mrhowtos_main`.`eng` 
SET `lastmodified` = CURRENT_TIMESTAMP WHERE `eng`.`english` = old.eng; 
UPDATE `mrhowtos_main`.`jap` 
SET `lastmodified` = CURRENT_TIMESTAMP WHERE `jap`.`japanese` = old.jap; 
END; 

由MySQL返回的錯誤是: MySQL表示:文件MySQL中這個CREATE TRIGGER語句的語法有什麼問題?

#1064 - You have an error in your SQL syntax; check the manual that corresponds 
to your MySQL server version for the right syntax to use near '' at line 5 
+0

你確定在輸入你的表名時沒有語法錯誤嗎? ,似乎日文是錯誤 –

+0

請格式化您的代碼 – Sebas

+0

100%確定表和列名稱是正確的 – user1397417

回答

1
#START TRIGGER 
    delimiter $$ 
    CREATE TRIGGER `lastedited` AFTER UPDATE ON `eng-jap` 
    FOR EACH ROW 
    BEGIN 
    UPDATE `mrhowtos_main`.`eng` 
    SET `lastmodified` = CURRENT_TIMESTAMP WHERE `eng`.`english` = old.eng; 
    UPDATE `mrhowtos_main`.`jap` 
    SET `lastmodified` = CURRENT_TIMESTAMP WHERE `jap`.`japanese` = old.jap; 
    END; 
    $$ 

如果仍無法正常工作,嘗試更換您的old.eng並與諸如靜態值old.jap「羅馬「

+0

威廉Kinaan的解決方案工作!儘管我仍然不知道爲什麼它沒有工作,我寫了它。我也不明白他做了什麼來修復它... – user1397417

+0

是的,它的工作。我只是不明白爲什麼它不按我寫的方式工作 – user1397417

+0

@ user1397417 delimiter $$ - >當您運行create trigger語句時,此語句更改數據庫原因的分隔符默認分隔符用於標識關閉你的聲明是「;」所以MySQL會對分隔符應該用於關閉整個查詢的語句感到困惑,因此將分隔符更改爲「$$」可以幫助MySQL確定您已經關閉了「CREATE TRIGGER」語句。 :) –