- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
createtablebank
(
customervarchar(20),--客户姓名
currentMoneymoney --当前余额
)
--银行规定:每个卡上必须要有元钱
altertablebank
addconstraintCK_BANK_CURRENTMONEYcheck(currentMoney=1);
--模拟两个用户
insertintobankvalues(张三,1000);
insertintobankvalues(李四,1);
select*frombank;
--李四找张三借元钱
--(1)将张三的余额减少
updatebanksetcurrentMoney=currentMoney-1000wherecustomer=张三;
select@@error; --返回如果不为,表示上面的SQL语句执行有问题。
--(2)将李四的余额要增加
updatebanksetcurrentMoney=currentMoney+ 1000wherecustomer=李四;
select@@error; --返回如果不为,表示上面的SQL语句执行没有问题。
--事务:将需要做一件事情的所有步骤当做一个整体执行,要么所有步骤都执行,要么一个
步骤都不执行。
/*
事务必须具备以下四个属性,简称ACID 属性:
原子性(Atomicity):事务是一个完整的操作。事务的各步操作是不可分的(原子的);要
么都执行,要么都不执行
一致性(Consistency):当事务完成时,数据必须处于一致状态
隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立
的,它不应以任何方式依赖于或影响其他事务
永久性 (Durability):事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务
的永久性
*/
--显示事务(常用):
--(1)开始事务:
begintransaction;
--(2)提交事务:
committransaction;
--(3)回滚事务:
rollbacktransaction;
--隐性事务:
SETIMPLICIT_TRANSACTIONSON
SETIMPLICIT_TRANSACTIONSOFF
deletefrombankwherecustomer=李四;
select*frombank;
deletefrombank;
--自动提交事务:这是SQLServer 的默认模式,它将每条单独的T-SQL 语句视为一个事务,
如果成功执行,则自动提交;如果错误,则自动回滚
--转账出现了问题,如果解决?要使用事务
--决定什么时候提交事务?什么时候回滚事务?需要根据@@error的值来决定。
@@error 只记录上一条SQL语句的执行状态如果成功,返回,如果不成功,返回非的值
--第一步:开启事务
begintransaction;
declare@myerrorint --声明一个变量,用来记录所有SQL语句执行完成后的状态值
set@myerror=0 --默认为表示无错误
--(1)将张三的余额减少
updatebanksetcurrentMoney=currentMoney-1000wherecustomer=张三;
set@myerror=@myerror+@@error;
--(2)将李四的余额要增加
updatebanksetcurrentMoney=currentMoney+ 1000wherecustomer=李四;
set@myerror=@myerror+@@error;
if(@myerror0)
begin
print对不起,转账未成功!
--第二步:回滚事务
rollbacktransaction;
end;
else
begin
print恭喜您,转账成功
--提交事务
committransaction;
end;
go
print转账后的状态为:
go
select*frombank;
--什么是事务?
--什么时候用到事务?类似银行转账,自动记录日志
--事务的特性:ACID
--掌握如何使用显示事务?
--假设银行规定每个员工在操作完客户的信息后,都必须将操作的记录保存到银行的日志表
中。
--编写一个事务。用来模拟往银行表中修改数据的时候,自动完成日志的插入,如果存款成
功,插入工作人员,时间,以及记录修改的信息
--如果存款不成功,那么记录工作人员,时间,以及记录修改的信息
crea
您可能关注的文档
- 2015年普通高等学校招生全国统一考试(福建卷)地理部分.doc
- 2015年全国城市省市县区行政级别对照表_(必威体育精装版最全).xls
- 2015年全国节能宣传周和全国低碳日宣传重点.pdf
- 2015年上海职称英语考试考务工作通知.doc
- 2015年社会工作法规与政策真题.pdf
- 2015年深圳鄙视链.pdf
- 2015年首都经济贸易大学翻译硕士汉语写作与百科知识考研真题,考研大纲,考研参考书,考研经验.pdf
- 2015年首都经济贸易大学翻译硕士英语翻译基础考研真题,考研大纲,考研参考书,考研经验.pdf
- 2015年首都经贸大学行政管理考研真题-参考书-大纲-经验-复习规划.pdf
- 2015年首都经贸大学行政管理考研真题-大纲-参考书-难度-复习规划.pdf
文档评论(0)