select  @num_worker=(select  department  from  department  where  num_worker=(select  worker_name  from  inserted)  )  
------>
select  @num_worker=(select  num_worker  from  department  where  worker_name=(select  worker_name  from  inserted)  )  这个触发器太乱了,以后还会有问题

解决方案 »

  1.   

    你的触发器不能处理一次插入多条记录的情况,你现在的出错信息是一个笔误造成的,在上面的回复已经指出。以下代码可以解决一次插入多条记录,但使用了临时表,是否可用要看你的服务器的情况。create  trigger  dep_insert  on  workstation  after  insert  
    as  begin  
    select department,worker_name=max(worker_name),num_worker=count(*)
    into #Temp 
    from inserted
    group by departmentupdate d  
    set  num_worker=d.num_worker+t.num_worker  
    from department d ,#Temp t
    where d.department=t.departmentinsert  into  department  
    select department,worker_name,null,num_worker
    from #Temp t
    where not exists (
    select * from department d
    where d.department=t.department
    )
    end
    go