关于Sql Server数据库中的事务如何处理

本教案需配合视频教程学习,视频教程地址为:http://www.xin3721.com/eschool/SQLxin3721/

Sql server中的事务处理功能:为了保证数据库的完整性。

事务(transaction):是将多个修改语句组合在一起的方法,这个方法中的所有语句只有全部执行才能正确完成功能。即要么全部执行,要么全部不执行。
 
事务的acid特性:
原子性:事务处理语句是一个整体,不可分割。Atomicity--A
一致性:事务处理前后数据库前后状态要一致。Consistency--C
分割性:多个事务并发处理互不干扰。Isolation--I
持久性:事务处理完成后,数据库的变化将不会再改变。Durability--D
 
开始事务:begin tran[saction]
显式开始事务:begin tran[action] tranaction_name
隐式开始事务:在执行insert、update、delete任何一条语句时自动执行的事务。
开启隐式事务应先执行set inpliclt_transactions on语句
关闭隐式事务需执行set inpliclt_transactions off语句
 
撤销事务:rollback tran[saction]
撤销事务语句被执行后整个事务处理将会被终止,事务处理中的所有操作将被忽略。
 
提交事务:commit tran[saction]
事务被提交后,将会将修改后的数据更新到数据库中。
 
根据全局变量@@error判断结果执行rollback tran和commit tran:
在事务的处理过程中,根据条件判断的结果执行取消或者提交事务,保证数据的正确性和完整性。
@@error全局变量会记录语句执行过程中的最后一条错误信息,如果有错误,则变量值为1,否则为0。
Begin tran transaction_try
Declare @insert_tran,@update_tran
Insert…..
Select @insert_tran=@@error
 
Update……
Select @update_tran=@@error
 
If @insert_tran=0 and @update_tran=0
Begin
…rollback tran
End
 
设置和撤销事务的保存点:
事务处理过程中,不撤销所有的操作而设置合适的保存点,提交从begin tran到保存点之间的修改语句。
设置保存点:save tran savepoint_name
撤销保存点:rollback tran savepoint_name
举例实验一下:
1.先从student表中查询一下所有的记录
select * from student
查询结果截图:
Student表中的数据记录
Student表中的数据记录
 
2.事务中加入判断和设置断点
Begin tran tran_a
Insert into student &#118alues('5','孙七','男','计算机')
Begin
If @@error<>0
Rollback tran
end
Save tran save1
 
Insert into student &#118alues('1','孙七','男','计算机')
Begin
If @@error<>0
rollback tran save1
end
commit tran
效果截图:
使用@@error判断处理事务并设置事务保存点。
使用@@error判断处理事务并设置事务保存点。
 
3.再次查询student表记录
select * from student
查询结果截图:
数据表查询结果
数据表查询结果
结果说明:此事务中设置的保存点成功,第一条数据插入成功,执行了事务中的部分语句。
第二条数据插入是不合法的,但是返回到了保存点位置,并非完全不执行事务中的语句。相关: Sql Server数据库
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值