Logging into table in SQL Server trigger

前端 未结 4 463
猫巷女王i
猫巷女王i 2021-01-13 14:30

I am coding SQL Server 2005 trigger. I want to make some logging during trigger execution, using INSERT statement into my log table. When there occurs error during execution

4条回答
  •  时光取名叫无心
    2021-01-13 15:22

    Another possible option is to use a table variable to capture the info you want to store in your permanent log table. Table variables are not rolled back if a ROLLBACK TRANSACTION command is given. Sample code is below...

    
    
    --- Declare table variable
    DECLARE @ErrorTable TABLE
      ( [DATE]  smalldatetime,
        [ENTRY] varchar(64) )
    
    DECLARE @nErrorVar  int
    
    --- Open Transaction
    BEGIN TRANSACTION
    
    --- Pretend to cause an error and catch the error code
    SET @nErrorVar = 1  --- @@ERROR
    
    IF (@nErrorVar = 1)
      BEGIN
    
        --- Insert error info table variable
        INSERT INTO @ErrorTable 
          ( [Date], [Entry] )
        SELECT
            getdate(), 'Error Message Goes Here'
    
        RAISERROR('Error Message Goes Here', 16, 1)
    
        ROLLBACK TRANSACTION
    
        --- Change this to actually insert into your permanent log table
        SELECT  *
        FROM    @ErrorTable
    
      END
    
    IF @@TRANCOUNT  0
      PRINT 'Open Transactions Exist'
    ELSE
      PRINT 'No Open Transactions'
    

提交回复
热议问题