sql - 插入数据忽略当前事务

标签 sql sql-server error-handling transactions

我的数据库中有一个表,该表实际上可以用作记录目标。我在SQL代码中将其与以下代码模式一起使用:

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

长话短说,其中一些代码必须与事务一起执行。我正在确定没有任何内容写入日志,因为事务回滚也会回滚错误日志条目。有什么可以做的吗?

编辑:我确实知道如何通过在插入日志之前执行回滚/提交来解决。我的问题是,是否存在插入数据的已知方法,以使其不受正在进行的事务的影响。例如:如果我使用单独的连接将其插入,则可以完成此操作。只有我想找到在单个SQL语句中执行此操作的方法

EDIT2:澄清:这是关于Microsoft SQL

最佳答案

如果您真的想避免使用事务,可以尝试使用here's一种技术。这是局部变量的变体。

关于sql - 插入数据忽略当前事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1799845/

相关文章:

c# - 如何使用 SqlDataReader 获取存储过程返回的分组数据?

用于多列的 SQL UNPIVOT

javascript - 为什么即使我已经执行过此测试,仍然期望我的函数抛出错误?

sql - WINDOWS转Linux字符集问题

sql - 从现有表插入?

sql-server - 测量事务日志吞吐量?

ruby-on-rails - 尝试显示错误消息,但遇到: undefined method `errors' for nil:NilClass

sql - 避免在一组记录中重复值

mysql - 从关联表中获取

apache - 将 PHP 设置为始终在错误 500 时重定向