簡體   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