设为首页 收藏本站
查看: 790|回复: 0

[经验分享] Sql Server数据库中的事务处理:开始、撤销、提交

[复制链接]

尚未签到

发表于 2017-7-13 19:26:54 | 显示全部楼层 |阅读模式
  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
查询结果截图:
DSC0000.jpg
Student表中的数据记录

2.事务中加入判断和设置断点
Begin tran tran_a
Insert into student values('5','孙七','男','计算机')
Begin
If @@error<>0
Rollback tran
end
Save tran save1

Insert into student values('1','孙七','男','计算机')
Begin
If @@error<>0
rollback tran save1
end
commit tran
效果截图:
DSC0001.jpg
使用@@error判断处理事务并设置事务保存点。

3.再次查询student表记录
select * from student
查询结果截图:
DSC0002.jpg
数据表查询结果
结果说明:此事务中设置的保存点成功,第一条数据插入成功,执行了事务中的部分语句。
第二条数据插入是不合法的,但是返回到了保存点位置,并非完全不执行事务中的语句。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-393554-1-1.html 上篇帖子: SQL Server 2014 Database Mail重复发送邮件特殊案例 下篇帖子: sql server 随机读取数据
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表