你的员工表和部门表用什么关联啊?你的触发器确时只取了INSERTED的第一行,原因是在INSERTED中有多行,而你没有和员工表关联,用的员工表怎么和部门表关联就怎么和INSERTED关联,老大你FROM了三个表居然就关联两个,不出错才怪

解决方案 »

  1.   

    CREATE TRIGGER 部门表_tri
    before update ON 部门表 
    for each row
    begin
    update 员工表
    set 工号 = substr(工号,1,2)||substr(:new.部门号, 3, 1)
    where substr(工号,1,2)=:old.部门号;
    end;
    /
      

  2.   

    sorry:
    CREATE TRIGGER 部门表_tri
    before update ON 部门表 
    for each row
    begin
    update 员工表
    set 工号 = :new.部门号||substr(工号,3,1)
    where substr(工号,1,2)=:old.部门号;
    end;
    /
      

  3.   

    CREATE TRIGGER 部门表修改触发 ON [dbo].[部门表] 
    FOR UPDATE
    AS
    update 员工表
    set 员工表.工号 = (inserted.部门号 + substring(工号, 3, 1))
    from 员工表, inserted, deleted
    where 员工表.工号 like (deleted.部门号 + '_')
    AND 员工表.工号 like (inserted.部门号 + '_')