SqlServer Trigger insert update delete

本文介绍下,Sql Trigger的注意点。

基本格式如下

--drop trigger JhToPLMUserTrigger
create trigger JhToPLMUserTrigger
on Users for insert,update
as
DECLARE @bits int;
--SET @bits = COLUMNS_UPDATED(); 
--IF ((@bits & 1)>0 or (@bits & 2)>0)
IF (UPDATE(username) or update([password]) or update(logincode))
begin
insert into TempTableForJhToPLMUser  select UserID,UserName,logincode,[PassWord],'U' from inserted
--insert into TempTableForJhToPLMUser select UserID,UserName,logincode,[PassWord],'U' from deleted
end

其中用得比较多的有insert与delete比较好判断。只用区分inserted与deleted是否有数据集就OK了。

update比较难判断,应该MS Sql的update的机制是先删除,在插入的方式执行的update操作。

捕获起来不是那么方便。执行一条update 在触发器里面的 inserted与deleted的数据集中都会有数据。

那么在使用 columns_update()函数可以来监听更新的列信息。

比如(@bits & 1)>0 用来监听第一列更新状态,(@bits & 2)>0 第二列,(@bits & 4)>0 第三列,(@bits & 8)>0 第四列 依次类推。

依次是2的0次方,1次方,2次方,3次方等等。这种用起来比较复杂。

还有一种,update() 来判断列的更新情况。如上面标红的UPDATE(username) ,username为列名,直接来判断列的更新情况,比较简便。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值