有nj_user和nj_empdata两个表,其中userid是主/外键。我想实现ni_user表中删除一条记录,在nj_empdata表中自动触发删除userid相同的记录。
use xx
go
CREATE TRIGGER delemp ON [dbo].[nj_user] 
FOR  DELETE 
AS delete  from nj_empdata where nj_empdata.userid=nj_user.userid 
以上程序报错:列前缀 'nj_user' 与查询中所用的表名或别名不匹配。
如果写
AS delete  from nj_empdata,deleted where nj_empdata.userid=nj_user.userid 
报错:第 3 行: ',' 附近有语法错误。(deleted是不是系统表,njuser被删除的记录存在这里面?)
请教正确写法,谢谢!!

解决方案 »

  1.   

    CREATE TRIGGER delemp ON [dbo].[nj_user] 
    FOR  DELETE 
    AS
    delete nj_empdata from deleted where nj_empdata.userid=deleted.userid
      

  2.   

    楼上说的对,应该是Deleted.UserID,请看书了解触发器原理,deleted是当做delete操作时,系统在缓存中创建的表,内容是你删除的数据集(若干条记录),修改时update触发器,缓存中有两个表,inserted and Deleted,前者存放新书据集,后者旧数据集。楼主,记着给分啊!!:)