ACID 一词表达了事务在使命关键的应用程序中所起的作用。ACID 是由事务处理先驱者创立的,代表了不可分性、一致性、隔离性和持续性。
这些属性确保可预知行为的安全性,加强了事务作为“全或无”命题的作用,而此命题旨在有很多变量时减少管理负荷。
不可分性
事务是一个工作单元,在其中应用程序的 BEGIN TRANSACTION 和 END TRANSACTION 语句之间发生一系列操作。事务只执行一次,且是不可分的,即完成全部工作或者不做任何工作。
与某个事务关联的操作通常具有共同的目标,并且是相互依赖的。如果系统只执行这些操作的一个子集,则可能会破坏事务的总体目标。不可分性消除了系统处理操作子集的可能性。
一致性
事务是一个完整的单元,因为它保持数据的一致性,将数据从一种数据一致状态转换到另一种数据一致状态。
一致性要求在语义上保留事务绑定的数据。某些维护一致性的责任由应用程序开发人员承担,他们必须确保应用程序已强制所有已知的完整性约束。例如,当开发用于转帐的应用程序时,应避免在转帐过程中任意移动小数点。
隔离性
事务是一个隔离单元,允许每个并行执行的事务表现得像是在系统中运行的唯一事务那样。
隔离性要求即使同时可能有其他事务正在运行,每个事务也像是操作数据存储区的唯一事务一样。事务应从不查看其他事务的中间阶段。
当事务可序列化时将获得最高的隔离级别。在此级别上,从一组可并行执行的事务获得的结果与通过连续运行每个事务所获得的结果相同。由于高度隔离会限制可并行执行的事务数,所以一些应用程序降低隔离级别以换取更大的吞吐量。
持续性
事务也是一个恢复单元。如果事务成功,则即使在提交后计算机立即崩溃,系统仍将保证更新该事务。专用记录允许系统的重新启动过程完成未完成的操作,以使事务可持续
<% @Page Language="C#" %>
<% @Import Namespace="System.IO" %>
<% @ Import Namespace="System.Data" %>
<% @ Import Namespace="System.Data.SqlClient" %>
<script runat="server">
private void Page_Load(Object sender, EventArgs e) {
?string Cnn = "Server=(local);uid=sa;pwd=;Database=pubs;";
??? if(!IsPostBack)
?{
???? RunSqlTrans(Cnn);
?}
}
private void RunSqlTrans(string Conn)
{
??SqlConnection MyConn = new SqlConnection(Conn);
??MyConn.Open();
??SqlCommand Command = MyConn.CreateCommand();
??SqlTransaction myTrans;
??myTrans = MyConn.BeginTransaction();
??Command.Connection = MyConn;
??Command.Transaction = myTrans;
??try
??{
????Command.CommandText = "insert into a values('xiaomingfdgdfgdfdfgdf','4')";
????Command.ExecuteNonQuery();
????myTrans.Commit();
????Response.Write("Transaction Commit Success !");
????}
??catch(Exception e)
??{
????try
????{
?????myTrans.Rollback();
????}
????catch (SqlException ex)
????{
?????if(myTrans.Connection != null)
?????{
???????Response.Write("An exception of type " + ex.GetType() +
???????????" was encountered while attempting to roll back the transaction.");
?????}
????}
????Response.Write("An exception of type " + e.GetType() +
???????????" was encountered while inserting the data."+e.Message);
??}
??finally
??{
????MyConn.Close();
??}
}
</script>