触发器的使用

删除触发器

ALTER TRIGGER [DeleteTrigger_PersonInfo] 
   
ON  [dbo].[T_PersonInfo] 
   AFTER 
DELETE   
AS 
BEGIN    
    
SET NOCOUNT ON;  --当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。

    
Declare @DeletedID int
    
Select @DeletedID=UserID From Deleted;

    
--删除T_User中的信息
    Delete From T_User Where F_ID=@DeletedID;

    
--删除T_Admin中的信息
    Delete From T_Admin Where F_ID=@DeletedID;

    
--删除T_Shop中的信息
    Delete From T_Shop Where F_ID=@DeletedID;

END

修改触发器

lter Trigger UpdateTrigger_PersonInfo
on T_PersonInfo
AFTER 
Update
as
    
[if(Update(name) or Update(sex))]  --如果是全部字段上都有更新就触发触发器,那么这句话就可以不要

    
BEGIN    
        
Update T_Contact set IsChecked=0 from T_Contact ,Deleted DeletedTable,Inserted InsertedTable where T_Contact.InfoId=DeletedTable.ID 
    
End

关于删除触发器,我在这里不作介绍了,相信大家应该能看懂。
在这里我来介绍下 Update Trigger
在这里我们首先看到了if(Update(name) or Update(sex)) 这句话的意思就是当我更新Name或者Sex字段时触发这个触发器。
下面我们来看下这个Update语句。
Update T_Contact set IsChecked=0 from T_Contact ,Deleted DeletedTable,Inserted InsertedTable where T_Contact.InfoId=DeletedTable.ID
首先我们需要明白的一点是:在做Update的时候,其实是做了两部操作,step 1: 删除原来的数据  step 2: 增加新的数据
所以Deleted DeletedTable 就是要删除的原来数据
Inserted InsertedTable  就是要添加的新数据
明白了这点后,再看这个就比较容易了!
posted @ 2007-10-15 16:53  海底的鱼  阅读(148)  评论(0)    收藏  举报