我有一个成绩表Score,有字段yuwen,shuxue,yingyu,Zongfen
其中Zongfen是yuwen,shuxue,yingyu 三个字段之和
现在我的意思是修改了yuwen,shuxue,yingyu 任何一个字段的数据就利用触发器自动更新Zongfen的值
我写了如下的触发器
CREATE TRIGGER [TRIGGERStudentScore] ON [dbo].[Score]
FOR UPDATE AS
if @@rowcount=0 return
update StudentTestScore set Zongfen=yuwen+shuxue+yingyu
问题是此触发器可以工作,但是当多数据更新的时候速度奇慢!
请各位高手指点,究竟是哪里出了问题?
其中Zongfen是yuwen,shuxue,yingyu 三个字段之和
现在我的意思是修改了yuwen,shuxue,yingyu 任何一个字段的数据就利用触发器自动更新Zongfen的值
我写了如下的触发器
CREATE TRIGGER [TRIGGERStudentScore] ON [dbo].[Score]
FOR UPDATE AS
if @@rowcount=0 return
update StudentTestScore set Zongfen=yuwen+shuxue+yingyu
问题是此触发器可以工作,但是当多数据更新的时候速度奇慢!
请各位高手指点,究竟是哪里出了问题?
AS
update StudentTestScore set Zongfen = n.yuwen + n.shuxue + n.yingyu
from StudentTestScore m , inserted n where m.关键字 = n.关键字
go 关键字:如姓名或学号.
要判断被update的是不是要检测的地方。不然整个table的任何一个field被update就会触发。
FOR UPDATE AS
begin
if ( UPDATE (yuwen) OR UPDATE (shuxue) OR UPDATE (yingyu )) update a set Zongfen=yuwen+shuxue+yingyu
from StudentTestScore a
where exists(select 1 from inserted where a.关联 = 关联)
end
go