[英]MySQL Before insert trigger syntax error?
我正在尝试创建一个简单的Before Insert MySQL Trigger,以检查表中是否存在任何重复项。 但是我在(*)
的行中出现了语法错误。 怎么了 ?
delimiter ;
(*) CREATE TRIGGER `BookLanguages_BeforeInsertTrigger`
BEFORE INSERT ON `BookLanguages`
FOR EACH ROW
BEGIN
IF (exists(select * from Languages bl where bl.BookID = new.BookID and bl.LanguageID = new.LanguageID)) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'An error occurred';
END IF;
(*) END;
我正在使用社区服务器v5.5.21
使用不同的分隔符,例如:
DELIMITER //
...然后在END //
行中使用//
。
原因是你的倒数第二行中的分号将所有内容发送回服务器,因此服务器看不到你的最终END;
并创建触发器而不会看到最后一行。 在它看来,这是一个语法错误。
在此上下文中, DELIMITER
命令的目的是区分触发器中的每个语句的结尾(对于服务器)和触发器的结束(客户端将其发送到服务器)。 虽然它们不同,但您仍然可以在触发器的主体中使用分号,而不会让客户认为您已终止该语句。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.