- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
事务触发器
10.24事务(Transaction)和触发器(trigger)
事务(Transaction):
SQL Server 的事务是SQL Server提供的一种高级约束机制,用于强制数据完整性的
事务可以定义更为复杂的约束;可以包含复杂的SQL Server语句,通常用于在多表之间执行特殊的业务规则约束的
事务是作为一个不可分割的逻辑单元执行的一组操作命令【一系列数据库操作】,这些命令作为一个整体一起向系统提交,要么都执行,要么都不执行【撤销/回滚】
转账过程就是一个事务
它需要两条Update语句来完成,这两条语句是一个人整体
如果其中任一条出现错误,则整个转账业务也应取消
两个账户中的余额应恢复到原来的数据
从而确保转账前和转账后的余额不变
事务的特性:
事务必须具备以下四个特性,简称ACID特性:
原子性(Atomicity):事务的各步操作是不可分的(原子的),事务是一个完整的操作,要么都执行,要么都不执行
一致性(Consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态,当事务完成时,数据必须处于一致状态
隔离性(Isolation):事务必须是独立的,它不应以任何方式依赖于或影响其他事务,对数据进行修改的所有并发事务是彼此隔离的
持续性(Durability)(永久性Permanence):一个事务一旦提交,他对数据库中数据的改变就应该是永久性的,接下来的其他操作或故障不应该对其有任何影响
为什么使用事务
事务可以实现特殊业务规则约束
可以把你认为关系密切的一组操作命令【一系列数据库操作】,作为一个不可分割的逻辑单元执行,这些命令作为一个整体一起向系统提交,要么都执行、要么都不执行【撤销/回滚】
事务的典型的应用就是银行账户问题
银行转账业务分析:
例如:假定资金从张三的账户转到李四的账户
要求:
张三账户转出的资金必须和李四账户增加的资金相等
张三账户的资金转出,然后李四账户的资金必须增加
张三账户的自今年没有转出,李四账户的而资金不能增加
如果用T-sql语言模拟银行转账
银行转账的本质就是两个SQL语句【update语句】
事务的分类
自动提交事务:是SQL Server的默认模式,每条单独的T-sql语句都是一个事务,如果成功执行,则自动提交;如果错误,则自动回滚,不需要显示的写出事务的开始和结束的标志
显示事务【用户定义的事务】:用begin tran[saction] 明确指定事务的开始,以commit 或rollback语句显示结束,这是最常用的事务类型
隐式事务:用set implicit transactions on 将隐式事务模式设置为打开,在前一个事务完成时新事务隐式启动,但每个事务仍以commit或rollback语句显示完成
--显示事务:
Begin tran
Update students
Set name=’cle’
Where id =1
--rollback tran
Commit tran
--隐式事务
Create table q
(q1 int primary key ,q2 nchar(3))
Set implicit_transactions on
Insert into q values(1,’aa’)
Insert into q values(2,’bb’)
Commit transaction
Insert into q values(3,’cc’)
Select * from q
Commit transaction
Set implicit_transactions off
创建事务:
T-sql定义事务的语句:
开始事务:begin tran[saction]
提交事务:commit tran[saction] 一旦失误提交或回滚,则事务结束
回滚事务:rollback tran[saction]
判断某条语句执行是否出错:
使用全局变量@@error 如果该函数返回的是0说明执行成功
1.@@error只能判断当前(仅挨着该函数的上一条语句)一条SQL语句执行是否有错
2.为了判断事务中所有T-sql语句是否有错,我们需要对错误进行累计
如:set @errorSum=@errorSum+@@error
使用事务建议:
事务应尽可能短,并避免嵌套事务
在
银行转账业务
---存储过程
create proc BankTranMoney
@tranMoney numeri
您可能关注的文档
最近下载
- 2025-2030中国二手工程机械行业市场发展趋势与前景展望战略研究报告.docx
- 锁骨骨折课件PPT课件.pptx VIP
- 在2025年县医院医德医风问题集中整治工作动员部署会议上的讲话.docx VIP
- 2025年高考语文(全国二卷)试题评析及教学策略分析.docx
- CECS 161-2004 喷射混凝土加固技术规程.docx VIP
- 欧陆6100A 6180A型无纸图像记录仪规格说明书(中文).pdf
- 中考语文阅读理解《热爱就像破冰船》含答案.docx VIP
- 豆制品生产加工项目可行性研究报告.docx
- 计划跟项资料目管理系统二期(子任务跟现场物资管理)_用户操.docx
- 《基孔肯雅热防控技术指南(2025年版)》主题教育.ppt VIP
文档评论(0)