![]() |
1
21
你想让他们什么时候开火?
在动作之后运行(
触发器最大的问题之一是,每当执行某个操作时,触发器都会触发, 即使没有行受到影响
此外,对于触发器,您将使用
MSDN文档实际上对触发火灾的时间和影响进行了相当深入的讨论 here |
![]() |
2
5
|
![]() |
3
3
任何操作类型语句只触发一次触发器,无论有多少行受到影响,都必须写入触发器以处理多行插入/更新/删除。 如果触发器一次只依赖于插入或删除的伪表中的一行,那么它将失败。更糟糕的是,它不会因错误而失败,它不会影响您希望受触发器影响的所有行。不要通过触发器中的循环或光标来修复此问题,请更改为基于集合的逻辑。触发器中的光标会使整个应用程序突然停止,而一个500000条记录的事务会处理并将表锁定数小时。 大容量插入旁路触发器,除非指定使用它们。请注意这一点,因为如果让它们绕过触发器,则需要代码来确保触发器中发生的任何事情在大容量插入之后也会发生。或者您需要使用FIRE_触发器选项调用批量插入。 |
![]() |
4
2
我想我应该从Eric发布的链接中强调一个触发器无法触发的情况:
|
![]() |
Saijo-Shi · PLpgsql中的更新触发器 1 年前 |
|
user26814368 · Oracle在触发器中过滤错误数据 1 年前 |
![]() |
robertspierre · 在多对多关系中自动删除未引用的行 1 年前 |
![]() |
Martin · 由于活动触发器,无法登录到SQL Server 1 年前 |
![]() |
gonzalo2000 · 脚本在手动运行时有效,但触发器不起作用 2 年前 |
![]() |
yessoos · 在触发的处理程序中使用类属性 2 年前 |