在MySQL表触发器时多行删除(Trigger on MySQL table when multip

2019-10-20 17:04发布

我写了运行前行被删除,更新表从该表中总结的数据触发。 触发效果很好,当我一次删除一行。 不过,如果我是在一次删除多个行与像声明

DELETE FROM myTable WHERE id BETWEEN 1 and 100;

将触发前的下一行被删除或将触发器运行所有在同一时间的第一行上完全运行?

Answer 1:

触发器将完全为每一行运行,见触发常见问题解答

A.5.3:用MySQL 5.6有语句级或行级触发器?

在MySQL 5.6,所有触发器是FOR EACH ROW,也就是说,触发器被用于被插入,更新或删除的每一行激活。 MySQL的5.6不支持使用FOR EACH STATEMENT触发器。

这是有效的当前最新版本, MySQL的5.7了。



Answer 2:

从http://dev.mysql.com/doc/refman/5.5/en/trigger-syntax.html

下面每一行的语句定义触发器主体; 也就是说,该语句到每个触发器激活时间, 这对于受触发事件的每一行发生一次执行。 在该示例中,触发器主体是一个简单的SET,其累积到用户变量中的值插入量列。 该声明是指列NEW.amount这意味着“的量列的值被插入到新行”。

删除事务只会出现一次,但随后对每个受查询行将发生触发



文章来源: Trigger on MySQL table when multiple rows deleted