gpt4 book ai didi

sql - INSERT 是否可以在触发器 "inserted"表中产生多行结果?

转载 作者:行者123 更新时间:2023-12-03 02:49:49 28 4
gpt4 key购买 nike

我知道在触发器中 - 至少对于 SQL Server - 人们永远不应该假设插入的表只有一行,这意味着触发器中这样的 SQL 通常是不好的:

select @UserID = ID from inserted

但是出于好奇,一组 INSERT 语句是否会导致插入 包含多行的表?我知道更新很容易,但从我的测试来看,我无法模拟插入的类似结果。我尝试在发送批处理终止符之前发送多组插入,例如:

insert into TriggerTest (col2) select 'a'
insert into TriggerTest (col2) select 'b'
insert into TriggerTest (col2) select 'c'
go

并将它们包装在事务中:

begin tran
insert into TriggerTest (col2) select 'a'
insert into TriggerTest (col2) select 'b'
insert into TriggerTest (col2) select 'c'
commit

但它始终会导致触发器在 1 行的 inserted 表中触发 3 次,而在 3 行的 inserted 表中永远不会触发一次。

这对我来说完全有意义(毕竟它们是 3 个独立的语句),而且我不需要实际执行它,我只是想知道单独的 INSERTS 是否可以表现出与此不同的行为。

编辑:这是一个愚蠢的问题:当然可以,在插入结果集时!

insert into TriggerTest (col2) select 'a' union select 'b'

...或任何其他类型的集合。

请原谅,现在已经是凌晨 3 点了。我会将这个问题留给那些应该更了解的人。

最佳答案

尝试

insert into TriggerTest (col2) 
select 'a'
union
select 'b'
union
select 'c'

关于sql - INSERT 是否可以在触发器 "inserted"表中产生多行结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3772118/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com