当我通过ADO.NET连接到数据库时。至于SqlConnection对象,它有一个函数:BeginTransaction,有3个重载。我不知道如何使用它以及它的功能是什么?
答案 0 :(得分:2)
交易确保工作块以ACID方式运行 - 全部或全部。
在跟踪长时间运行的事务时,可选名称对DBA很有用。在TSQL 中直接,名称对于保存点等更重要 - 但在OO世界中,你有一个对象。
isolation level确定 ACID的方式。 Serializable是最纯粹的,但在额外的锁(键范围锁等)方面有更多的开销。
典型用法是:
using (SqlTransaction tran = conn.BeginTransaction())
{
try
{
/* work here, assigning "tran" onto
* any commands */
tran.Commit();
}
catch
{
tran.Rollback();
throw;
}
}
在许多方面,使用TransactionScope
更简单 - 这会创建一个环境事务,命令会自动登记到该事务中。它也可以跨越DTC的多个dbs等:
using(TransactionScope tran = new TransactionScope())
{
/* work here; no need to assign tran to anything */
tran.Complete();
}
答案 1 :(得分:0)
事务用于保证一组操作(sql语句)全部执行(提交)或者不执行任何操作(回滚)。
典型用法是两个或多个表的更新必须全部成功(或全部失败)。