关于mysql:如何在一个sql触发器中使用多个事件?

How to use multiple events in one sql trigger?

这是我目前的代码:

1
2
3
4
5
6
7
8
9
10
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

如果我仅使用一个事件,但是只有两个或三个事件,它将引发此错误。

插入更新触发器如何确定是插入还是更新


在MySQL或MariaDB中,必须为一个事件定义每个触发器。 您无法定义适用于多个事件的触发器。

https://dev.mysql.com/doc/refman/5.7/zh-CN/create-trigger.html具有以下语法:

1
trigger_event: { INSERT | UPDATE | DELETE }

此语法表示该事件必须是INSERT,UPDATE或DELETE这三个值之一。

如果我们DESCRIBE INFORMATION_SCHEMA.TRIGGERS,则找到另一个线索:

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

事件类型是enum,这意味着它只能有一个值,不能有多个。

您链接的示例适用于Microsoft SQL Server,而不适用于MySQL或MariaDB。

尽管" Microsoft"和" MySQL"都以类似的音节开头,但它们是两种具有不同功能的不同产品。