2017-09-02 39 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”都以类似的音节开头,但它们是两种不同的产品,具有不同的功能。