日期:2014-05-17  浏览次数:20517 次

大家都来看看一个关于触发器的代码吧,不胜感激
/*为worker表创建一个更新触发器update_worker,
要求当更新worker表中职工的部门号时,
自动修改dapart表中相关部门的“部门人数”*/
CREATE TRIGGER trig_update_worker 
ON worker
FOR update 
AS 
update depart set dnum = dnum-1 
from deleted d ,dapart 
where dapart.dno=d.dno 

update dapart set dnum = dnum+1 
from inserted i,dapart 
where dapart.dno=i.dnoGO

下面更改worker
update worker set dno='2' where wno ='1'
但是提示有错误:
消息 208,级别 16,状态 1,过程 trig_update_worker,第 5 行对象名 'dapart' 无效。


很苦恼怎么回事呢,下面是创建表的代码大家可以给调试一下,先谢谢了

create table depart(
dno int primary key,
dname char(10) ,
)

create table worker(
wno int,
wanme char(8),
wsex char(2),
wbir datetime,
wiscom char(2),
wjobdate datetime,
dno int,
primary key(wno),
foreign key(dno) references depart(dno)
)

------解决方案--------------------
You use wrong table name in trigger, it should be depart not dapart
------解决方案--------------------
It's 'depart',don't 'dapart'.Please check up carefully!!!
------解决方案--------------------
表名写错了,dapart 替换成depart 即可