续集事务涵盖提交期间的错误

时间:2016-09-22 18:04:12

标签: sql ruby transactions sequel

我正在使用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代码是否会检测到并且也会失败?

1 个答案:

答案 0 :(得分:1)

取决于数据库适配器的实现方式。它可能抛出异常,这与# Unregister the original Group admin. admin.site.unregister(Group) # Create a new Group admin. class GroupAdmin(admin.ModelAdmin): # Use our custom form. form = GroupAdminForm # Filter permissions horizontal as well. filter_horizontal = ['permissions'] # Register the new Group ModelAdmin. admin.site.register(Group, GroupAdmin) 不同。因此,它不会被Sequel::Rollback方法捕获,并会冒泡到您的代码。

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