gpt4 book ai didi

sql - 我应该提交还是回滚读取事务?

转载 作者:太空狗 更新时间:2023-10-30 01:37:14 25 4
gpt4 key购买 nike

我有一个在事务中执行的读取查询,以便我可以指定隔离级别。查询完成后,我该怎么办?

  • 提交交易
  • 回滚事务
  • 什么都不做(这将导致事务在 using block 结束时回滚)

做每一个的含义是什么?

using (IDbConnection connection = ConnectionFactory.CreateConnection())
{
using (IDbTransaction transaction = connection.BeginTransaction(IsolationLevel.ReadUncommitted))
{
using (IDbCommand command = connection.CreateCommand())
{
command.Transaction = transaction;
command.CommandText = "SELECT * FROM SomeTable";
using (IDataReader reader = command.ExecuteReader())
{
// Read the results
}
}

// To commit, or not to commit?
}
}

编辑:问题不在于是否应该使用事务或者是否有其他方法来设置事务级别。问题是提交或回滚不修改任何内容的事务是否有任何区别。有性能差异吗?对其他连接有影响吗?还有其他区别吗?

最佳答案

你 promise 。时期。没有其他明智的选择。如果您开始了交易,您应该关闭它。提交释放您可能拥有的任何锁,并且对于 ReadUncommitted 或 Serializable 隔离级别同样有意义。依赖隐式回滚——虽然在技术上可能是等同的——只是一种糟糕的形式。

如果这还不能说服您,想象一下下一个在您的代码中间插入更新语句的人,并且必须追踪发生的隐式回滚并删除他的数据。

关于sql - 我应该提交还是回滚读取事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/309834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com