两个触发器
ALTER trigger [dbo].[二手车更新_修改更新时间]
on [dbo].[二手车出售]
after update
as
begin
if COLUMNS_UPDATED()<>0x000000000000C000000000000000 and COLUMNS_UPDATED()<>0x0000000000040000000000000000
begin
print COLUMNS_UPDATED()
--update 二手车出售 set 修改时间=GETDATE()
-- from 二手车出售 b with(nolock),Deleted d,Inserted i
-- where b.编号=i.编号
end
print COLUMNS_UPDATED()
end
ALTER trigger [dbo].[已售]
on [dbo].[二手车出售]
after update
as
begin
DECLARE @已售 nvarchar;
select @已售=已售 from inserted;
if(@已售='是')
begin
update 二手车出售 set 已售1=0
from 二手车出售 b with(nolock),Deleted d,Inserted i
where b.编号=i.编号
end
else if(@已售='否')
begin
update 二手车出售 set 已售1=1
from 二手车出售 b with(nolock),Deleted d,Inserted i
where b.编号=i.编号
end
end
现在 执行第二个触发器会调用第一个,第一个执行完又去调用第二个,有什么办法让他们不互相调用吗
------解决方案--------------------
先问下自己为什么要这么玩.
------解决方案--------------------
第一个执行完又去调用第二个
--> 没发现第一个触发器里有update语句(已注释掉)喔? 何来触发第二个触发器?
------解决方案--------------------
---把第一个update语句放到第二个里面不是更好,第一个触发器可以不建
ALTER trigger [dbo].[已售]
on [dbo].[二手车出售]
after update
as
begin
DECLARE @已售 nvarchar;
select @已售=已售 from inserted;
if(@已售='是')
begin
update 二手车出售 set 已售1=0
from 二手车出售 b with(nolock),Deleted d,Inserted i
where b.编号=i.编号
end
else if(@已售='否')
begin
update 二手车出售 set 已售1=1
from 二手车出售 b with(nolock),Deleted d,Inserted i
where b.编号=i.编号
update 二手车出售 set 修改时间=GETDATE()
from 二手车出售 b with(nolock),Deleted d,Inserted i
where b.编号=i.编号
end
end