码迷,mamicode.com
首页 > 数据库 > 详细

SQL Server - 使用表触发器记录表插入,更新,删除行数

时间:2017-05-23 00:39:55      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:完整   删除   sys   如何   如何使用   ssi   current   cti   server   

除了表触发器的基本知识,本篇还使用了一下知识点。

  1.    如何使用sql获取当前session 用户名和机器名

Select CURRENT_USER,Host_name()

  2.    如何在表触发器中获取当前表名称

SELECT OBJECT_SCHEMA_NAME( parent_id ) + ‘.‘ + OBJECT_NAME( parent_id )  FROM sys.triggers

 

触发器完整代码

ALTER TRIGGER dbo.DimTest_AdutitTriger
   ON  dbo.DimTest
   AFTER INSERT,DELETE,UPDATE
AS
BEGIN
                SET NOCOUNT ON;
                declare @tbName varchar(256)
                SELECT @tbName = ‘dbo.DimTest’
                DECLARE @action as varchar(20), @Count int = 0 ;
    SET @action = ‘INSERT‘; -- Set Action to Insert by default.

    IF EXISTS(SELECT * FROM DELETED)
    BEGIN
        SET @action =
            CASE
                WHEN EXISTS(SELECT * FROM INSERTED) THENUPDATE-- Set Action to Updated.
                ELSEDELETE-- Set Action to Deleted.      
            END
    END
    ELSE
        IF NOT EXISTS(SELECT * FROM INSERTED) RETURN; -- Nothing updated or inserted.
                IF ( @action = ‘INSERTor @action =‘UPDATE‘)
                BEGIN
                                set @Count = (select count(*) from INSERTED)
                END
                IF  @action = ‘DELETEBEGIN
                                set @Count = (select count(*) from DELETED)
                END
                insert into dbo.AuditTable
                select getdate(),CURRENT_USER,Host_name(),null,@tbName,‘dim‘,@action,@Count
END
GO

SQL Server - 使用表触发器记录表插入,更新,删除行数

标签:完整   删除   sys   如何   如何使用   ssi   current   cti   server   

原文地址:http://www.cnblogs.com/bi-info/p/6801624.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!