Sql Server Trigger 的使用(Insert ,Update,Delete...)

Table Name:   TB_1,TB_2   (两个table 结构完全一样)

Create Table TB_1(ID Int,  Name_1 varchar(20),Status varchar(20) ,Type Varchar(20))

Create Table TB_2(ID Int,  Name_1 varchar(20),Status varchar(20) ,Type Varchar(20))

 -- 为Tb_1创建Trigger, 当 TB_1 发生变化时,变化的信息(Insert ,Update,Delete)将保存于 TB_2 中,Update是两条记录,Update 之前和之后 都要保存盐类

 Create trigger Trig_t2
On Tb_1
For Insert,Update,Delete
As
  declare @id int,
          @name_1 varchar(20),
   @status varchar(20)

If not exists(Select 1 from deleted)   ----Insert
    Begin
     select @id=id, @name_1=name_1,@status=status from inserted
     insert into tb_2(id,name_1,status,type)values(@id,@name_1,@status,'Insert')
    End

If exists(select 1 from inserted) and exists(select 1 from deleted) ---Update
  Begin
     /* Update Before */
     select @id=id, @name_1=name_1,@status=status from deleted
     insert into tb_2(id,name_1,status,type)values(@id,@name_1,@status,'UpdateBefor')

     /* Update End */
     select @id=id, @name_1=name_1,@status=status from inserted
     insert into tb_2(id,name_1,status,type)values(@id,@name_1,@status,'UpdateEnd')
  End

If not exists(select 1 from inserted)  ---Delete
  Begin
    
     select @id=id, @name_1=name_1,@status=status from inserted
     insert into tb_2(id,name_1,status,type)values(@id,@name_1,@status,'Delete')
  End

----测试----

insert into tb_1(id,name_1,status)values('1','1','1')
select * from tb_1
select * from tb_2

id          name_1               status               type                                              
----------- -------------------- -------------------- --------------------------------------------------
1           1                    1                    NULL

(1 row(s) affected)

id          name_1               status               type                                              
----------- -------------------- -------------------- --------------------------------------------------
1           1                    1                    Insert

-----------测试Update---------------

update tb_1 set name_1='2'where id='1'

select * from tb_1
select * from tb_2

id          name_1               status               type                                              
----------- -------------------- -------------------- --------------------------------------------------
1           2                    1                    NULL

(1 row(s) affected)

id          name_1               status               type                                              
----------- -------------------- -------------------- --------------------------------------------------
1           1                    1                    Insert
1           1                    1                    UpdateBefor
1           2                    1                    UpdateEnd

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值