2014-03-30 93 views
0
USE `movieinfo`; 
DELIMITER $$ 
CREATE TRIGGER `Movie_BINS` BEFORE INSERT ON `movies` FOR EACH ROW 
BEGIN 
IF (length <30 && length >480 && year <1929) 
THEN 
INSERT into movies 
END IF; 
END 

我想創建一個觸發器,但我不斷得到Error Code: 1064,因爲我的語法在某個地方是錯誤的。MYSQL工作臺意外錯誤

回答

0

我猜你想要驗證數據並在數據看起來不正確時報告錯誤。在最近的MySQL版本,你可以使用[signal][1]

DELIMITER $$ 
CREATE TRIGGER `Movie_BINS` BEFORE INSERT ON `movies` FOR EACH ROW 
BEGIN 
    IF ((new.length < 30 OR new.length > 480) AND new.year < 1929) THEN 
     SIGNAL SQLSTATE '45000' 
       SET MESSAGE_TEXT = 'Data error on insert'; 
    END IF; 
END$$ 

DELIMITER ; 

一個before insert觸發並不需要做一個明確的插入到表(事實上,它不能)。相反,如果成功完成,則會插入new記錄中的數據。如果你想停止插入,你需要生成一個錯誤,並且signal是一個很好的方法。

+0

完美的工作!謝謝! – user3474409