.Net事务基础知识讲解
ACID 属性
代表了不可分性、一致性、隔离性和持续性。
不可分性(原子性):在一个操作中涉及两个或两个以上独立的信息,这些信息要么全部提交,要么一个也不提交。
一致性:操作要么创建新的有效的数据状态,要么(如果发生任何错误的话)将所有数据返回到初始状态。
隔离性:操作在没有提交并不与别的任何操作发生任何关系。
持续性:即使发生错误重新启动,保存过的已经提交的数据在正确状态下仍然有效。
相同连接中数据库事务实现方式:数据库实现与Ado.Net实现
实例一:数据库中事务实现方式
create database DataBaseExample
go
use DataBaseExample
go
create table Table1
(
test varchar(20)
)
go
create table Table2
(
test varchar(20)
)
create proc TransExample
as
begin transaction
declare @error1 int,@error2 int
insert into table1 values('test1Table1')
select @error1=@@error
insert into table2 values('test2Table1')
select @error2=@@error
if(@error1=0 and @error2=0)
commit transaction
else
rollback transaction
execute TransExample
select * from Table1,Table2
实例二:Ado.Net中事务实现方式
using (SqlConnection conn = new SqlConnection("server=.;database=databaseexample;uid=sa;pwd=sa"))
{
conn.Open();
SqlTransaction trans = conn.BeginTransaction();
try
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection=conn;
cmd.Transaction = trans;
cmd.CommandText = "insert into table1 values('test1Table1')";
cmd.ExecuteNonQuery();
cmd.CommandText = "insert into table2 values('test2Table1')";
cmd.ExecuteNonQuery();
trans.Commit();
}
}
catch
{
trans.Rollback();
}
}