2009-11-25 90 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

相关问题