|
1
10
触发器定义应始终处理多行。 取自 SQLTeam :
以下是您应该如何实施它:
|
|
|
2
4
是的,如果一条语句影响多行,则应该通过单个触发器调用来处理,因为您可能希望恢复整个事务。不可能在逻辑上将其拆分为单独的触发器调用,我认为SQLServer不提供这样的标志。通过发出影响多行的UPDATE或DELETE语句,可以使SQL Server使用多行调用触发器。 |
|
|
3
1
首先,我关心的是,您正在使用游标使触发器处理多行。不要那样做!使用基于集合的语句,而不是连接到插入或删除的伪表。在我来这里工作之前,有人在我们的数据库里放了一个基于光标的触发器。处理一个400,00条记录的插入花费了40多分钟(我经常需要为一个客户机向这个表插入100000条记录)。将其更改为基于集合的解决方案将时间更改为不到一分钟。虽然所有触发器都必须能够处理多行,但不能通过创建性能噩梦来实现。 如果可以为cusor编写select语句,则可以基于设置的相同select语句编写insert、update或delete语句。 |
|
|
4
0
|
|
|
5
0
一条SQL语句总是调用一个触发器执行——这是触发器定义的一部分。(这也是一种情况,似乎每个编写触发器的人至少都会被绊倒一次。)我相信您可以发现检查@@ROWCOUNT会影响多少记录。 |
|
John D · 需要为NULL或NOT NULL的WHERE子句 1 年前 |
|
Marc Guillot · 记录值时忽略冲突 1 年前 |
|
|
Fachry Dzaky · 正确使用ROW_NUMBER 1 年前 |
|
|
TriumphTruth · 从满足特定条件的数据集中选择1行 1 年前 |