我们可以在mysql的单个表上有多个触发器吗?

use*_*499 4 mysql triggers

我在MySQL中的单个表上编写了一个插入触发器和插入触发器之后.但是当我放入另一个触发器时,触发器之一自动被替换.如果我在插入触发器之后放置,则插入触发器代码自动被替换.请注意它会被删除,或者您可以删除代码.

他们两个分别工作正常.请帮帮我.

ste*_*fen 12

在MySQL 5.7.2之前

每个表只能有一个触发器并触发事件和操作时间.例如,它可能有

  • 一个BEFORE UPDATE或一个AFTER UPDATE
  • 一个BEFORE UPDATE一个BEFORE INSERT

在桌子上触发.但是你可以使用触发器来执行多个语句BEGIN ... END.有关更多信息,请参阅MySQL 5.6文档.

使用MySQL 5.7.2

每个表的触发器数量没有限制.此外,还可以使用PRECEDESFOLLOWS关键字定义触发器处理的顺序.有关更多信息,请参阅MySQL 5.7文档.


Ed *_*bbs 6

注意:此答案的前半部分适用于 v5.7.2 之前的 MySQL。请参阅下面来自 @steffen 的 v5.7.2 及更高版本的答案。后半部分仍然有效:OP 在尝试实现多个触发器时使用了相同的名称。


你可以有一个BEFORE INSERT触发器和一个AFTER INSERT触发器。它在文档中。每个只能有一个 - 例如,您不能有两个(或三个或四个)BEFORE INSERT触发器。

如果您的AFTER INSERT触发器正在清除您的BEFORE INSERT触发器,那么这两个触发器可能具有相同的名称。确保每个都有一个唯一的名称。