请问SQL触发器使用Deleted为什么没有执行?

ALTERTRIGGERzkemp_udpateonzlemployeeafterupdateasdeclare@stateint,@iintset@state=(sel... ALTER TRIGGER zkemp_udpate on zlemployee
after update
as
declare @state int,@i int
set @state=(select top 1 state from inserted)

delete from USERINFO where badgenumber=name
or empid in (select top 1 id from Deleted) --就是这条没有执行,USERINFO表中有EMPID,zlemployee表中删除数据时ID是对应的,可是为什么不会运行,请指点,谢谢!

if (@state=9)
begin
delete a from USERINFO a join inserted b on a.name=b.name and a.empid=b.ID
end
...................
已经搞定了,是after update只写了更新,没有写DELETE ,呵呵
展开
 我来答
匿名用户
2014-05-23
展开全部
把触发器改一下,做成如下测试:
ALTER TRIGGER zkemp_udpate on zlemployee
after update
as
declare @state int,@i int
set @state=(select top 1 state from inserted)

if exists (select 1 from USERINFO where badgenumber=name
or empid in (select top 1 id from Deleted))
begin
print('有记录')

end
-----------------------
然后执行update表,看看是否输出 '有记录'问题,没有的话,说明没有找到可以删除的记录,自然是不会执行了
追问

这里查也是有记录的,我在ZLEMPLOYEE 表里删除数据还是没有变动

追答
还有哪个地方的触发器对ZLEMPLOYEE 表有操作?我觉得可能是这个原因:虽然删除成功了,但是其他地方的触发器又插入了一条这样的记录,所以你看到的结果没有变化,你可以通过对ZLEMPLOYEE 表加一个列,如recorddate, 默认值为 getdate(),看看是不是真的存在这类情况
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
战地密报
2014-05-23 · TA获得超过211个赞
知道小有建树答主
回答量:424
采纳率:0%
帮助的人:159万
展开全部
亲·肯定是badgenumber=name 这个有问题·你懂的·
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
szm341
2014-05-23 · TA获得超过6726个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5133万
展开全部
badgenumber=name是表USERINFO中的两个字段吗
更多追问追答
追问
是的,这条怎么写好点呀?
追答
badgenumber=name这两个字段类型一致吗?
你把报的错误发出来,还是没有错误?仅仅是不执行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yangch_ts
2014-05-23 · 超过17用户采纳过TA的回答
知道答主
回答量:119
采纳率:100%
帮助的人:49.6万
展开全部
badgenumber=name--编译通过了吗
追问
这整条都没有通过,一定要加IF吗?
追答
name 哪来的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式