sql server 中如何实现行级触发器(SQL Server中多行数据更新的触发器)

时间:2022-12-17 05:08:47
比如要创建一个update 后触发器 
例如:表一:一个员工表  此表有个 部门人数列
      表二: 部门表     两表通过deptid关联  
现在的问题是 sql server默认不支持行级触发器    当一次更新了多条记录时(把多个员工有一个部门转到另一个部门)  触发器只能触发一次 即部门人数只增加了1(现在只考虑增加的情况)


update employer set dept_id='d002' where employer_id in ('120604','120606')  结果:d002部门只增加了1 


据说用游标可以实现,在sql server中除游标还有其他方法吗,在平常应用中是不是一般不推荐用游标

4 个解决方案

#1


不好意思,部门人数列在部门表中,写错了  

#2


触发一次,批量更新。

#3


不大明白,楼主能不能说的详细点

#4


--创建触发器每当修改员工的部门后自动统计相应部门人数(这里只考虑部门人数的增加)
create trigger auto_countrs 
on employer for update 
as

begin
update departments set dept_rs=dept_rs+1
from departments d, inserted i
where d.deptid=i.deptid
end 
以上是触发器代码

#1


不好意思,部门人数列在部门表中,写错了  

#2


触发一次,批量更新。

#3


不大明白,楼主能不能说的详细点

#4


--创建触发器每当修改员工的部门后自动统计相应部门人数(这里只考虑部门人数的增加)
create trigger auto_countrs 
on employer for update 
as

begin
update departments set dept_rs=dept_rs+1
from departments d, inserted i
where d.deptid=i.deptid
end 
以上是触发器代码