触发器deleted 表和 inserted 表详解!!!

 阅读全文并下载代码:http://www.sufeinet.com/thread-264-1-1.html

create   trigger  updateDeleteTime
on   user
for   update
as
begin  
 
update   user   set  UpdateTime = ( getdate ())  from   user   inner   join  inserted  on   user .UID = Inserted.UID
end

上面的例子是在执行更新操作的时候同时更新,一下修改时间。
关键在于Inserted表
触发器语句中使用了两种特殊的表:deleted 表和 inserted 表。
Deleted 表用于存储 DELETE 和 UPDATE 语句所影响的行的复本。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传输到 deleted 表中。Deleted 表和触发器表通常没有相同的行。

Inserted 表用于存储 INSERT 和 UPDATE 语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到 inserted 表和触发器表中。Inserted 表中的行是触发器表中新行的副本。

1.插入操作(Insert)
Inserted表有数据,Deleted表无数据

2.删除操作(Delete)
Inserted表无数据,Deleted表有数据

3.更新操作(Update)
Inserted表有数据(新数据),Deleted表有数据(旧数据)

应用实例

 

代码
set  ANSI_NULLS  ON
set  QUOTED_IDENTIFIER  ON
go


--  =============================================
--
 Author:        <Author,sufei>
--
 Create date: <Create Date,2010-05-11>
--
 Description:    <当是短信充值时修改相信的记录使记录不会重复获取>
--
 =============================================
ALTER   TRIGGER   [ dbo ] . [ updatestart ]
   
ON   [ dbo ] . [ OrderTelecom ]   FOR   update
AS  
BEGIN
    
    
DECLARE   @state   int ;
    
DECLARE   @note2   varchar ( 50 )
    
    
SELECT    @state =  Inserted.ortState, @note2   = Inserted.ortNote2  from  Inserted
    
    
IF   @state = 1   AND   @note2 = 1
     
begin
        
-- 当发短信猫取走记录时修改状态为成功和取过的状态
       update  OrderTelecom  set  OrderTelecom.ortState = 2  ,OrderTelecom.ortSmsmessages = ' 短信充值成功 '
      
from  OrderTelecom  inner   join  Inserted  on  OrderTelecom.ortId = Inserted.ortId 
     
end
     
     
if   @state   in ( 2 , 3 , 10 and   @note2 = 0
      
begin
      
update  OrderTelecom  set  ortNote2 = 1
      
from  OrderTelecom  inner   join  Inserted  on  OrderTelecom.ortId = Inserted.ortId 
     
end
 
END


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值