SQL 触发器的问题

hagy2010 2010-08-31 03:07:54
表A:当插入新的数据到表A时,将会触发 触发器事件。
如果只插入一条数据时触发器是正常的,但当一次插入多条数据时如何对插入的每一行都触发事件呢?

create trigger hello
on [表A]
for
insert
as
declare @a int,@b int
select @a=[字段1],@b=[字段2] from Inserted
begin
insert into [表B]
select [字段1]=@a
from [表C]
where [字段2]=@b
end
该触发器的功能是:当表A有插入数据时,从表C中选择对应的数据插入到表B中去。
请问如果是一次有多条数据插入表A时,应如何写呢?SQL好像没有Orcal中的for each row每行触发的写法?
...全文
48 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hagy2010 2010-08-31
  • 打赏
  • 举报
回复
谢谢josy..非常感激!
guguda2008 2010-08-31
  • 打赏
  • 举报
回复
6L正解。
百年树人 2010-08-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hagy2010 的回复:]
之前写的省略了,应该是
create trigger hello
on [表A]
for
insert
as
declare @a int,@b int
select @a=[字段1],@b=[字段2] from Inserted
begin
insert into [表B]
select [字段1]=@a,[字段2],[字段3]
from [表C]
where [字段……
[/Quote]
create trigger hello
on [表A]
for
insert
as
begin
insert into [表B]
select i.[字段1],c.[字段2],c.[字段3]
from [表C] c,inserted i
where c.[字段2]=i.[字段2]
end
hagy2010 2010-08-31
  • 打赏
  • 举报
回复
之前写的省略了,应该是

create trigger hello
on [表A]
for
insert
as
declare @a int,@b int
select @a=[字段1],@b=[字段2] from Inserted
begin
insert into [表B]
select [字段1]=@a,[字段2],[字段3]
from [表C]
where [字段2]=@b
end

如何能够对每行进行触发呢?1楼的回答是错误的,我查了下资料触发器只对每次操作(无论插入多条或一条,都只触发一次)触发相应事件,并没有对每一行都触发一次事件,
「已注销」 2010-08-31
  • 打赏
  • 举报
回复
[Quote=引用楼主 hagy2010 的回复:]
表A:当插入新的数据到表A时,将会触发 触发器事件。
如果只插入一条数据时触发器是正常的,但当一次插入多条数据时如何对插入的每一行都触发事件呢?

create trigger hello
on [表A]
for
insert
as
declare @a int,@b int
select @a=[字段1],@b=[字段2] from Inserted
begin
inser……
[/Quote]
应该是每行插入时都有触发该触发器的吧?
百年树人 2010-08-31
  • 打赏
  • 举报
回复
create trigger hello
on [表A]
for
insert
as
begin
insert into [表B]
select c.[字段1]
from [表C] c,inserted i
where c.[字段2]=i.[字段2]
end
guguda2008 2010-08-31
  • 打赏
  • 举报
回复
你从表C中没有提取任何字段
winstonbonaparte 2010-08-31
  • 打赏
  • 举报
回复
你就算執行多行插入,觸髮器也會用每一行進行操作的

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧