AFTER INSERT触发和INSERT IGNORE / ON DUPLICATE KEY更新

时间:2014-07-11 12:59:52

标签: mysql sql triggers

如果没有插入行,是否应触发(AFTER INSERT)触发器?

即使没有插入INSERT IGNORE ...INSERT ... ON DUPLICATE KEY UPDATE ...的行,也会触发触发器 这种行为是否正常?

插入行后,或者在进行INSERT查询后,AFTER INSERT是否意味着什么? 测试显示第二个,但为什么?

1 个答案:

答案 0 :(得分:2)

  

插入行后或插入后,AFTER INSERT是否有意义   已经查询了?

MySQL Spec(具体摘录)

  

Triger语法:trigger_time:{BEFORE | AFTER}

     

trigger_time是触发动作时间。它可以是之前或之后   表示触发器在每行之前或之后激活   修改。

     

•INSERT:每当插入新行时触发器都会激活   表;例如,通过INSERT,LOAD DATA和REPLACE语句。

这样,插入行后触发器就会被激活。

你看到的行为也在MySQL文档中得到了评论

  

一个可能令人困惑的例子是INSERT INTO ... ON   DUPLICATE KEY UPDATE ...语法:BEFORE INSERT触发器激活   每一行,后跟一个AFTER INSERT触发器或两者   BEFORE UPDATE和AFTER UPDATE触发后,取决于是否存在   是该行的重复键。