SQL 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) THEN 'UPDATE' -- Set Action to Updated.
                ELSE 'DELETE' -- Set Action to Deleted.      
            END
    END
    ELSE
        IF NOT EXISTS(SELECT * FROM INSERTED) RETURN; -- Nothing updated or inserted.
                IF ( @action = 'INSERT' or @action ='UPDATE')
                BEGIN
                                set @Count = (select count(*) from INSERTED)
                END
                IF  @action = 'DELETE'
                BEGIN
                                set @Count = (select count(*) from DELETED)
                END
                insert into dbo.AuditTable
                select getdate(),CURRENT_USER,Host_name(),null,@tbName,'dim',@action,@Count
END
GO


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM