2009-12-17 101 views
15

只是一個簡單的問題,毫無疑問,有人會知道答案。觸發器內有多個插入/更新語句?

我需要能夠在觸發器中執行多個插入/更新。每一次嘗試失敗:(

DROP TRIGGER IF EXISTS `Insert_Article`// 
CREATE TRIGGER `Insert_Article` AFTER INSERT ON `Article` 
FOR EACH ROW insert into FullTextStore (`Table`, `PrimaryKey`, `ColumnName`, `Data`, `Created`) values ('Article', NEW.ArticleID, 'Description', NEW.Description, UNIX_TIMESTAMP()) 
// 

此刻結束,上面簡單地插入一行到表中當父表插入。這工作得很好。

爲了得到這個與多張值工作,我需要做

​​

但是......必須有一個更簡單的方法當我嘗試使用;終止每個語句,它失敗

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL version for the right syntax to use near 'select 'Article', NEW.ArticleID, 'Keywords', 'NEW.Keywords, UNIX_TIMESTAMP())' at line 1 

我甚至無法獲取多個更新語句。

如果有人能指出我做錯了什麼,這將是一個很大的幫助嗎?

乾杯

加文

回答

21

從文檔:Create Trigger Syntax

trigger_stmt是語句 當激活觸發器執行。如果 要執行多個 語句,請使用BEGIN ... END 複合語句構造。這 ,您還可以使用相同的 語句是允許的範圍內 存儲程序

CREATE TRIGGER testref BEFORE INSERT ON test1 
    FOR EACH ROW BEGIN 
    INSERT INTO test2 SET a2 = NEW.a1; 
    DELETE FROM test3 WHERE a3 = NEW.a1; 
    UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1; 
    END; 
+0

你是人(作爲一個PC世界ñ一切)。 非常感謝。我認爲在使用END時我忽略了BEGIN。 – Gavin 2009-12-17 13:16:29