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