2017-09-02 80 views
1

這是我的代碼的時刻:如何在一個sql觸發器中使用多個事件?

DROP TRIGGER `backup`; 

DELIMITER $$ 
CREATE TRIGGER `backup` AFTER INSERT UPDATE DELETE 
    ON `warehouse` 
    FOR EACH ROW 
     BEGIN 

     END$$ 
DELIMITER ; 

這是我不斷收到錯誤:

enter image description here

我檢查我的版本MariaDB的的。這是10.1.21

它的作品,如果我只使用一個事件,但有兩個或三個它會引發此錯誤。

Insert Update trigger how to determine if insert or update

+0

你必須爲INSERT,UPDATE和DELETE做三個分開的觸發器 –

+0

有沒有什麼辦法可以在一箇中完成這一切?我發現了一些例子,語法如上 – bobby

+0

請提供一個這樣的例子的鏈接。 –

回答

2

在MySQL或MariaDB的,每個觸發器必須恰好一個事件來定義。您無法定義適用於多個事件的觸發器。

https://dev.mysql.com/doc/refman/5.7/en/create-trigger.html具有語法:

trigger_event: { INSERT | UPDATE | DELETE } 

此語法表示法意味着事件必須是一個三個值插入,更新或刪除。

EVENT_MANIPULATION enum('INSERT','UPDATE','DELETE') 

事件類型是enum,這意味着它只能有一個值,而不是多個:

另一個線索,如果我們DESCRIBE INFORMATION_SCHEMA.TRIGGERS被發現。

您鏈接的示例適用於Microsoft SQL Server,不適用於MySQL或MariaDB。

儘管「微軟」和「MySQL」都以類似的音節開頭,但它們是兩種不同的產品,具有不同的功能。