请问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 ,呵呵 展开
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 ,呵呵 展开
4个回答
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表,看看是否输出 '有记录'问题,没有的话,说明没有找到可以删除的记录,自然是不会执行了
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 表加一个列,如recorddate, 默认值为 getdate(),看看是不是真的存在这类情况
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
亲·肯定是badgenumber=name 这个有问题·你懂的·
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
badgenumber=name是表USERINFO中的两个字段吗
更多追问追答
追问
是的,这条怎么写好点呀?
追答
badgenumber=name这两个字段类型一致吗?
你把报的错误发出来,还是没有错误?仅仅是不执行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
badgenumber=name--编译通过了吗
追问
这整条都没有通过,一定要加IF吗?
追答
name 哪来的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询