sql创建触发器,避免死循环

两张用户表,修改其中一张表a的密码字段,另一张表b也同时更新字段。
同理的,修改表b的密码字段,另一张表a也同时更新字段。
分别为两张表创建触发器,这样就会出现,两个触发器会陷入死循环,处理方法如下:
 CREATE TABLE [T_users]( 
	[yhbm] [varchar](20) NOT NULL,
	[pwd] [varchar](20) NULL)
CREATE TABLE [dbo].[tUsers]( 
	[usersName] [varchar](50) NOT NULL,
	[usersPwd] [varchar](50) NOT NULL)  
CREATE Trigger [dbo].[truUser2]
        On   [dbo].[tUsers]                --在tuser表中创建触发器 
       for Update                          --为什么事件触发 
     As                                        --事件触发后所要做的事情 
       if Update(usersPwd)            
       begin 
       
       
   ALTER TABLE T_users DISABLE TRIGGER [truUser]  ---关闭T_users的触发器
   
         Update   dbo.T_users
           Set pwd=i.usersPwd
           From dbo.T_users  br , Deleted d ,Inserted i      --Deleted和Inserted临时表 
           Where br.yhbm=d. usersName

      
   ALTER TABLE T_users ENABLE TRIGGER [truUser]

       end      
ALTER Trigger [dbo].[truUser]
       On   [dbo].[T_users]                --在tuser表中创建触发器 
       for Update                          --为什么事件触发 
     As                                        --事件触发后所要做的事情 
       if Update(pwd)            
       begin 
       
        ALTER TABLE tUsers DISABLE TRIGGER [truUser2]     --关闭tUsers表中的触发器
 

         Update  dbo.tUsers   
           Set usersPwd=i.pwd 
           From dbo.tUsers  br , Deleted d ,Inserted i      --Deleted和Inserted临时表 
           Where br.usersName=d.yhbm  
         
         ALTER TABLE tUsers ENABLE TRIGGER [truUser2]
         
       end    



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值