2015-01-01 3 views
0

"# 1064 - SQL 구문에 오류가 있습니다. 올바른 구문을 보려면 MySQL 서버 버전에 해당하는 매뉴얼을 확인하십시오. ''at line 6 "그러나 무엇이 잘못되었는지 알아낼 수는 없습니다.트리거의 SQL 구문 오류,

사람 (위치 및 포인트, 그들은 기본 키도 독특한는 MEDIUMINT하지 있습니다)? @Mihai 중 하나를 언급

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 추가입니까? – Mihai

+0

둘 다 시도했지만 작동하지 않습니다. 오류는 '5'에 있어야합니다. – Stereo89

답변

1

으로 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

마지막 line.Also과 같이 구분 기호를 사용합니까`, 여기
CREATE TRIGGER pointsAssigns 
BEFORE INSERT ON MyTable 
FOR EACH ROW 
    SET NEW.points = IF(NEW.position > 6, 5, NEW.points); 

는이 SQLFiddle 데모

+0

나는 전에 그것을 시도했지만, 지금은 그것이 작동하는 것 같습니다. 당신은 – Stereo89

+0

@ Stereo89 당신은 아주 환영합니다 :) 행운을 빌어 요. – peterm