繁体   English   中英

MySQL在插入触发器语法错误之前?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM