2014-03-30 69 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