2017-03-15 6 views
0

새 트리거가 삽입되고 행 개수가 3600 행보다 큰 경우 가장 오래된 DB 항목을 삭제하는 트리거를 작성하려고합니다. 불행히도 7 번 줄에 오류 (1064)가 있지만이를 수정하는 방법을 모르겠습니다. mysql에서 DATETIME을 사용하여 정의 된 경우 열 시간.MySQL에서 MaxRow 트리거가 작동하지 않습니다.

CREATE TRIGGER maxRows BEFORE INSERT ON table1 
FOR EACH ROW 
BEGIN 
    IF ((SELECT COUNT(*) FROM table1) = 3600) THEN 
     DELETE FROM table1 
     ORDER BY time ASC 
     LIMIT 1; 
    END IF;  
END; 
+0

을 변경하려고 전체 오류 메시지를 기입하십시오. – Alfabravo

+0

메시지 : "SQL Error (1064) : SQL 구문에 오류가 있습니다. 올바른 구문을 보려면 MySQL 서버 버전에 해당하는 매뉴얼을 확인하십시오."at line 7 " –

답변

0

당신이 당신의 트리거 내부의 DML 문장이 때, 구분 기호

DELIMITER $$ 

CREATE TRIGGER maxRows BEFORE INSERT ON table1 
FOR EACH ROW 
BEGIN 
    IF ((SELECT COUNT(*) FROM table1) = 3600) THEN 
     DELETE FROM table1 
     ORDER BY time ASC 
     LIMIT 1; 
    END IF;  
END; 
END $$ 

DELIMITER ;