2015-01-01 40 views
0

我收到此消息「#1064 - 您的SQL語法中有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以獲得在第6行附近使用的正確語法「但無法弄清楚什麼是錯的。錯誤在觸發器中的SQL語法,MySQL

(位置和點MEDIUMINT,他們不是主鍵也不是唯一的)

有人嗎?

CREATE TRIGGER pointsAssigns 
before INSERT ON MyTable 
    FOR EACH ROW 
BEGIN 
IF NEW.position>6 THEN 
    set NEW.points=5; 
END IF; 
END; 
+0

添加'END;'作爲最後line.Also你使用分隔符? – Mihai

+0

我試了兩次,但沒有工作......錯誤應該在'5'。 – Stereo89

回答

1

由於@Mihai提到要麼添加關閉END和更改DELIMITER

DELIMITER // 
CREATE TRIGGER pointsAssigns 
BEFORE INSERT ON MyTable 
FOR EACH ROW 
BEGIN 
    IF NEW.position > 6 THEN 
    SET NEW.points = 5; 
    END IF; 
END // 
DELIMITER ; 

這裏是一個SQLFiddle演示

或使一個行觸發器,然後你不既不需要BEGIN...END塊也不需要改變DELIMITER

CREATE TRIGGER pointsAssigns 
BEFORE INSERT ON MyTable 
FOR EACH ROW 
    SET NEW.points = IF(NEW.position > 6, 5, NEW.points); 

這裏是一個SQLFiddle演示

+0

我已經嘗試過,但只有現在它似乎工作.. THNAK YOU – Stereo89

+0

@ Stereo89你很歡迎:)祝你好運。 – peterm