2014-04-11 32 views
0
CREATE TRIGGER expiryset ON test FOR INSERT 
BEGIN 
DECLARE exp TIMESTAMP; 
DECLARE name TEXT; 
SET @name := (SELECT name from test ORDER BY created_at DESC limit 1); 
SET @exp := (SELECT TIMESTAMPADD(WEEK,2,(CURRENT_TIMESTAMP))); 
UPDATE test SET expiry = @exp WHERE name= @name; 
END; 

上述觸發器工作,但只有在執行時我不能保存它。語法有什麼問題語法觸發器創建Mysql

回答

0

您必須將DELIMITER設置爲與默認;不同的內容才能將整個代碼一起對待。

DELIMITER $$ 

CREATE TRIGGER expiryset AFTER INSERT ON test FOR EACH ROW 
BEGIN 
DECLARE exp TIMESTAMP; 
DECLARE name TEXT; 
SET @name := (SELECT name from test ORDER BY created_at DESC limit 1); 
SET @exp := (SELECT TIMESTAMPADD(WEEK,2,(CURRENT_TIMESTAMP))); 
UPDATE test SET expiry = @exp WHERE name= @name; 
END$$ 

DELIMITER ; 
+0

感謝您的快速回復。我仍然收到語法錯誤:錯誤1064(42000):您的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,在正確的語法附近使用'ON test FOR INSERT BEGIN DECLARE exp TIMESTAMP; DECLARE名稱TEXT; SET @name:='at line 1 mysql> mysql> DELIMITER; – user1000622

+0

您對觸發器定義使用SQL Server語法。現在它已修復,您必須根據需要定義觸發上升事件(AFTER/BEFORE)。 –