Gav*_*vin 4 sql sql-server triggers insert
我知道在触发器中 - 至少对于SQL Server - 应该永远不要假设该inserted
表只有一行,这意味着触发器中的SQL通常是坏的:
select @UserID = ID from inserted
Run Code Online (Sandbox Code Playgroud)
但出于好奇,一组INSERT语句是否会导致一个inserted
多行的表?我知道使用UPDATE很容易,但从我的测试中我无法模拟INSERT的类似结果.我已经尝试在发送批处理终结符之前发送多组插入,例如:
insert into TriggerTest (col2) select 'a'
insert into TriggerTest (col2) select 'b'
insert into TriggerTest (col2) select 'c'
go
Run Code Online (Sandbox Code Playgroud)
并将它们包装在交易中:
begin tran
insert into TriggerTest (col2) select 'a'
insert into TriggerTest (col2) select 'b'
insert into TriggerTest (col2) select 'c'
commit
Run Code Online (Sandbox Code Playgroud)
但它总是会导致触发器使用inserted
1行表格触发3次,而从不使用inserted
3行表格触发.
这对我来说是完全有意义的(毕竟它们是3个单独的语句),我不需要实际执行它,我只是想知道单独的INSERTS是否会对此行为不同.
编辑:这是一个愚蠢的问题:当然,插入结果集时可以!
insert into TriggerTest (col2) select 'a' union select 'b'
Run Code Online (Sandbox Code Playgroud)
......或任何其他类型的集合.
原谅我,这里差不多凌晨3点.我会把这个问题留给那些应该知道更好的人.
尝试
insert into TriggerTest (col2)
select 'a'
union
select 'b'
union
select 'c'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1827 次 |
最近记录: |