SQL触发器一次触发1行
我正在创建一个更新触发器,如下所示(SQL Server 2005): 行的state列是23或25,请不要更新它。否则,请更新它。这很简单。我正在努力SQL触发器一次触发1行,sql,sql-server-2005,triggers,sql-update,Sql,Sql Server 2005,Triggers,Sql Update,我正在创建一个更新触发器,如下所示(SQL Server 2005): 行的state列是23或25,请不要更新它。否则,请更新它。这很简单。我正在努力 OldState = (Select State from Deleted) If OldState in (25,23) Update it --how to do it easily? else dont do nothing for this row 问题是触发器是用所有更新的行调用的,因此deleted是一个set,这意
OldState = (Select State from Deleted)
If OldState in (25,23)
Update it --how to do it easily?
else
dont do nothing for this row
问题是触发器是用所有更新的行调用的,因此deleted是一个set,这意味着第一条指令将无法工作,因为它试图只获取1个值,而它获取了一个set
事情很简单,我是不是遗漏了什么
非常感谢此代码假定:
- 键保持不变以链接“旧”行和“新”行
- 您需要简单的更新后处理
UPDATE
M --yes, this is correct
SET
SomeCol = SomeValue,
...
FROM
MyTable M
JOIN
DELETED D ON M.KeyCol = D.KeyCol
WHERE
D.State IN (23, 25)