2009-11-25 96 views
1

我在我的數據庫中有一個表,它基本上用作日誌記錄目標。我在我的SQL代碼下面的代碼模式中使用它:INSERT數據忽略當前事務

BEGIN TRY 
    ... 
END TRY 
BEGIN CATCH 
    INSERT INTO [dbo.errors] (...) 
    VALUES (ERROR_PROCEDURE(), ERROR_NUMBER(), ERROR_MESSAGE(), ...) 
END CATCH 

爲了使長話短說一些這個代碼都必須執行withing交易。我在計算出沒有寫入日誌,因爲事務回滾也會回滾錯誤日誌條目。任何事情都可以做到嗎?

編輯:我知道如何通過在INSERT記錄之前做回滾/提交。我的問題是,如果有一種已知的方式插入數據,以便它不受正在進行的事務影響。例如:如果我使用單獨的連接插入它,則可以完成此操作。只有我想找個做單獨的SQL語句中

EDIT2方式:澄清:這是有關Microsoft SQL

回答

1

如果你真的想避免使用交易,here's你可以嘗試一種技術。這是一個局部變量的變體。

0

在catch塊交易以特殊的方式表現。你應該總是檢查XACT_STATE()。如果事務註定(狀態-1),則不會執行任何寫入操作,如插入日誌表中。

-1

我不確定你使用的是哪個數據庫,但是在MySQL(我認爲)中你可以使用一個不支持事務的表(MyISAM)。由於該表不支持交易,因此它只是即時輸入信息。

+0

nope ...微軟SQL – galets 2010-06-29 22:47:18

+0

@Justin Savage只是看看問題下面的標籤瞭解更多詳情 – sra 2012-01-02 07:10:43

相關問題