首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >忽略当前事务的插入数据

问忽略当前事务的插入数据
EN

Stack Overflow用户
提问于 2009-11-26 04:47:42
回答 3查看 2.1K关注 0票数 1

我的数据库中有一个表,它本质上是一个日志记录目的地。我在我的SQL代码中通过以下代码模式使用它:

代码语言:javascript
复制
BEGIN TRY
    ...
END TRY
BEGIN CATCH
    INSERT INTO [dbo.errors] (...) 
    VALUES ( ERROR_PROCEDURE(),  ERROR_NUMBER(), ERROR_MESSAGE(), ... )
END CATCH

长话短说,其中一些代码必须与事务一起执行。我发现日志中不会写入任何内容,因为事务回滚也会回滚错误日志条目。对此我们能做些什么?

编辑:我知道如何在插入日志之前进行回滚/提交。我的问题是,是否有一种已知的方法可以插入数据,使其不受正在进行的事务的影响。例如:如果我使用一个单独的连接插入它,就可以这样做。我只是想在一条SQL语句中找到这样做的方法

EDIT2:澄清:这是关于Microsoft SQL的

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-16 14:01:56

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

票数 1
EN

Stack Overflow用户

发布于 2009-11-26 06:44:02

在CATCH块中,事务以一种特殊的方式运行。您应该始终检查XACT_STATE()。如果事务注定失败(state -1),则不允许执行任何写操作,如插入到日志表中。

票数 0
EN

Stack Overflow用户

发布于 2010-06-29 00:24:40

我不确定您使用的是什么数据库,但在MySQL (我认为)中,您可以只使用不支持事务的表(MyISAM)。因为该表不支持事务,所以它只在运行时输入信息。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1799845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档