employee(员工表)
employeeid , name ,deptid(部门编号) (其他字段省略)GZK(特殊表)
employeeid, deptid(部门编号) (其他字段省略)当employee表中的deptid修改了,GZK的deptid跟着修改
alter trigger trg_dept on employee for update
as
begin
update gzk set deptid=b.deptid from employee a,inserted b,deleted c
where a.employeeid=b.employeeid
end我想在UPDATE前加一个判断:如果是修改了deptid这个字段 ,如何写这个判断?或者有没有更好的方法写这个触发器。谢谢!
employeeid , name ,deptid(部门编号) (其他字段省略)GZK(特殊表)
employeeid, deptid(部门编号) (其他字段省略)当employee表中的deptid修改了,GZK的deptid跟着修改
alter trigger trg_dept on employee for update
as
begin
update gzk set deptid=b.deptid from employee a,inserted b,deleted c
where a.employeeid=b.employeeid
end我想在UPDATE前加一个判断:如果是修改了deptid这个字段 ,如何写这个判断?或者有没有更好的方法写这个触发器。谢谢!
update gzk set deptid=b.deptid from employee a,inserted b,deleted c
where a.employeeid=b.employeeid
begin
...
end;
触发了好多条记录,因为 GZK(特殊表) 有多条对应
alter trigger trg_dept on employee for update
as
if update(deptid)
begin
update gzk set deptid=b.deptid from employee a,inserted b,deleted c
where a.employeeid=b.employeeid and bz='0000'
end修改EMPLOY表其中一条记录,
update employee set deptid='A001' where employeeid='12345'
结果是GZK表中,所有bz='0000'记录的deptid 都等于 A001。
请问这样如何修改?
在GZK表中,条件BZ='0000',每个员工都对应有一条记录。
http://www.cnblogs.com/insus/articles/1447220.html
create trigger trg_dept on employee for update
as
DECLARE
@EmployeeID varchar(100),
@Deptid varchar(100)
SELECT @EmployeeID=EmployeeID,@Deptid=deptid FROM INSERTEDIF UPDATE([deptid])
begin
update gzk set deptid=@Deptid where gzk.employeeid=@EmployeeID and bz='0000'
end
我执行了这个语句
update employee set deptid='1103' where employeeid = 'A00937'
or employeeid = 'A04224' or employeeid = 'A00954'
结果是:(所影响的行数为 1 行)
(所影响的行数为 3 行)EMPLOYEE是修改了3个记录,但是GZK表中只有一条记录修改了