【问题标题】:Sequel transaction covers errors during commit后续事务涵盖提交期间的错误
【发布时间】:2016-10-06 08:48:48
【问题描述】:

我正在使用 Sequel 访问 MySql 和 SQL Server 数据库。

Sequel 允许我进行这样的交易:

@client = Sequel.connect(config)
@client.transaction do
    @client.execute("DELETE FROM UserGroup WHERE UserId = #{user_id}")
    @client.execute("DELETE FROM User WHERE Id = #{user_id}")
end

所以,如果我的查询出现问题,事务将回滚,一切都会好起来的。

如果我的查询没问题,但在提交时数据库出现问题并且提交失败,那么 Ruby 代码会检测到这一点并且也会失败吗?

【问题讨论】:

标签: sql ruby transactions sequel


【解决方案1】:

取决于数据库适配器的实现方式。它可能会抛出一个与Sequel::Rollback 不同的异常。因此,它不会被transaction 方法捕获,而是会冒泡到您的代码中。

但通常,问题发生在事务内的操作期间,而不是在 COMMIT 本身期间。通常你不应该担心它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-12
    相关资源
    最近更新 更多