再努力一点点

没有烟抽的日子
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

SQL触发器

Posted on 2010-07-13 10:51  ZhangPeng.Chen  阅读(264)  评论(0)    收藏  举报
我们可以对某个数据表添加SQL触发器,当该表进行添加、更新、删除时执行某项操作。
不过SQL触发器如果能不用尽量不用,我是在项目后期改动程序波及范围太大,使用SQL触发器可以避免,所以才使用。

数据表dbo.User(UserName, Password)
CREATE TRIGGER Trigger_User
    
ON dbo.User
    
FOR UPDATEDELETE
AS
IF UPDATE(UserName)
    
BEGIN
        
DECLARE @userNameBeforeUpdate NVARCHAR(255)
        
DECLARE @userNameAfterUpdate NVARCHAR(255)

        
SELECT @userNameBeforeUpdate = UserName FROM DELETED
        
SELECT @userNameAfterUpdate = UserName FROM INSERTED
    
END
ELSE IF NOT EXISTS(SELECT * FROM INSERTED)
    
BEGIN
        
DECLARE @userName NVARCHAR(255)

        
SELECT @userName = UserName FROM DELETED
    
END

在数据表dbo.User上创建触发器Trigger_User,当更新与删除时触发(FOR UPDATE, DELETE)。
当更新时如果是更改UserName字段IF UPDATE(UserName),则执行...
如果是删除操作,也就是INSERTED不存在(NOT EXISTS(SELECT * FROM INSERTED)),则执行...

更新操作
    DELETED 更新前
    INSERTED 更新后
删除操作
    DELETED 将被删除记录