我在MySQL中的单个表上编写了一个插入触发器和插入触发器之后。但是当我放入另一个触发器时,触发器之一自动被替换。如果我在插入触发器之后放置,则插入触发器代码自动被替换。 请注意,它会被删除,或者您可以删除代码。
他们两个分别工作正常。请帮帮我。
答案 0 :(得分:12)
每个表只能有一个触发器并触发事件和操作时间。例如,它可能有
BEFORE UPDATE
和一个AFTER UPDATE
或BEFORE UPDATE
和一个BEFORE INSERT
触发表格。但是,您可以使用BEGIN ... END
来执行多个语句的触发器。有关详细信息,请参阅MySQL 5.6 Documentation。
对每个表的触发器数量没有任何限制。此外,可以使用PRECEDES
和FOLLOWS
关键字定义触发处理的顺序。有关详细信息,请参阅MySQL 5.7 Documentation。
答案 1 :(得分:3)
您可以拥有BEFORE INSERT
触发器和AFTER INSERT
触发器。它位于documentation。您只能拥有其中一个 - 例如,您不能拥有两个(或三个或四个)BEFORE INSERT
触发器。
如果您的AFTER INSERT
触发器正在消灭BEFORE INSERT
触发器,则两个触发器可能具有相同的名称。确保每个都有一个唯一的名称。
答案 2 :(得分:0)
来自 MySQL 8.0 版 Documentation
<块引用>可以为具有相同触发事件和动作时间的给定表定义多个触发器。例如,您可以为一个表设置两个 BEFORE UPDATE 触发器。默认情况下,具有相同触发事件和动作时间的触发器会按照它们的创建顺序激活。要影响触发器顺序,请指定一个用于指示 FOLLOWS 或 PRECEDES 的 trigger_order 子句以及也具有相同触发器事件和操作时间的现有触发器的名称。使用 FOLLOWS,新触发器在现有触发器之后激活。使用 PRECEDES,新触发器在现有触发器之前激活。