问题描述:
表A(住院编号,住院费),表B(Myid,住院编号,...,金额) 触发器:
CREATE TRIGGER MyBInsert ON dbo.B
FOR INSERT
AS
-- 更新表A
update A
set 住院费 = 住院费 + b.金额
from A a, Inserted b
where (a.住院编号=b.住院编号)当单条insert语句批量在B表中插入记录(1条以上)时,仅第1条记录的金额可以汇总到A表的“住院费”。
请问大家:
1. 触发器定义时有没有可选择项强制多条记录批量触发
2. sql2000中是否可以修改服务器属性,强制多条记录批量触发
3. 批量触发是否可以,或者说根本就不能批量触发 谢谢!
表A(住院编号,住院费),表B(Myid,住院编号,...,金额) 触发器:
CREATE TRIGGER MyBInsert ON dbo.B
FOR INSERT
AS
-- 更新表A
update A
set 住院费 = 住院费 + b.金额
from A a, Inserted b
where (a.住院编号=b.住院编号)当单条insert语句批量在B表中插入记录(1条以上)时,仅第1条记录的金额可以汇总到A表的“住院费”。
请问大家:
1. 触发器定义时有没有可选择项强制多条记录批量触发
2. sql2000中是否可以修改服务器属性,强制多条记录批量触发
3. 批量触发是否可以,或者说根本就不能批量触发 谢谢!
2.2000没有DDL触发器
3.可以
你的运行结果出现问题,是因为SQL触发器有一些特殊之处,你把语句改成如下所示,应该就OK了.CREATE TRIGGER MyBInsert ON dbo.B
FOR INSERT
AS
-- 更新表A
update A
set 住院费 = 住院费 + b.金额
from A a, (select 住院编号,sum(金额) as 金额 from Inserted group by 住院编号) b
where (a.住院编号=b.住院编号)
OK了,刚才看错了!是从inserted中汇总,很完美了!
再次谢谢大家,请接分