首页 > 数据库 > SQL Server > 正文

Sql Server数据库--》事务

2024-08-31 00:54:40
字体:
来源:转载
供稿:网友
Sql Server数据库--》事务

事务:更多的是一种处理机制(同生共死)

事务是对增删改而言的(因为她们会改变数据)

事务是对多条语句而言,多个sql语句组成,整体执行

事务的4个特点叫做ACID:分别为:

1,A:原子性->事务不可以再分(意思是事务里的所有sql语句,要同时执行)

2,C:一致性->事务在操作后,表的数据需要保持莫种程度的一致性(sql语句操作后,要么都成功,要么都失败)

3,I:隔离->事务是单独执行的,一个事务与其它的事务隔离,没有关系

4,D:持久性->但事务成功提交,那么对数据表的影响永久保留

事务的创建:

1,开启事务:begintransation

2,提交事务:committransation

3,回滚事务:rollbacktransaction

注意:事务一旦开启,就必须提交或回滚

如果没有提交或回滚,那么你再次去访问数据表,就打不开数据了

Eg:

Declare@errorint=0//创建变量,记录错误信息0为正确

begintransaction//开启事务

updatebanksetcmoney-=1000wherename=’aa’

Set@error=@error+@@error

updatebanksetcmoney+=1000wherename=’bb’

Set@error=@error+@@error

If(@error<>0)//如果error不等于0,说明有错误

rollbacktransaction//回滚

else

committransaction//提交

在VS中使用事务:步骤

StringconStr=”server=.;userid=sa;pwd=123;database=MySchoolMoreData”;

Using(SqlConnectionconn=newSqlConnection(conStr))

{

//创建事务,不能new,conn点方法begTransaction()

SqlTansactionst=null;

Try{

Conn.open();//打开通道

st=conn.begTransaction();

Stringsql1=“updatebanksetcmoney-=1000wherename=’aa’”;

Stringsql2=“updatebanksetcmoney+=1000wherename=’bb’”;

//告诉服务器使用事务机制进行处理

SqlCommandcomm=newSqlCommand(sql2,conn,st);

comm.ExecuteNonQuery();

Console.WriteLine(“ok1”);

comm.commandText=sql1;

comm.ExecuteNonQuery();

Console.WriteLine(“ok2”);

//都Ok的话,就提交事务了

st.Commit();

Console.ReadKey();

}

Catch(Exceptionex)//到了这里说明sql语句有错

{

Conson.WriteLine(ex.Message);

st.RollBack();//回滚

Conson.ReadKey();

}

}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表