若用SQL语句编写的转账业务事务程序如下: START TRANSACTION; SET TRANSACTION ISOLATION LEVEL
若用SQL语句编写的转账业务事务程序如下:
START TRANSACTION;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
UPDATE Accounts
SET CurrentBalance=CurrentBalance-Amount
WHERE AccountID=A;
if error then ROLLBACK;
COMMIT;
UPDATE Accounts
SET CurrentBalance=CurrentBalance+Amount
WHERE AccountID=B;
if error then ROLLBACK;
COMMIT;
其中:Accounts为账户表,CurrentBalance为当前余额,Amount为新存入的金额。
该事务程序能否保证数据的一致性?如不能,请说明原因并改正。(100字以内)
不能实现,程序中第7行指令COMMIT为事务结束,此程序为两个事务,不满足转账业务要求。 修改方法:程序中第7行指令CONMIT删除即可。 解析:本题考查对事务并发控制概念及编程的掌握。
事务是一个完整的业务逻辑处理,原子性要求是为了保证现实业务的正确执行。事务的开始通常是隐性的,上一事务结束后第一条SQL语句为事务开始,结束必须以 RollBack或Commit显示地标明。
在并发状态下,可能会相互干扰破坏事务的ACID属性,加锁机制是保障事务正确执行的一种机制。
2PL协议能够保证事务并发状态下调度的正确性,即可串行化的调度。其内容是:
①在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;
②在释放一个封锁之后,事务不再申请和获得任何其他封锁。
用伪代码描述,即在R()、W()操作之前分别加指令SLoek()和XLock,不再使用数据之后再解锁,且第一个解锁指令后不能再有加锁指令即可。
在SQL编程中,使用标准SQL定义的隔离级别来实现事物并发执行下的一致性控制,4个隔离级别分别为Read Uncommitted、Read committed、Repeatable Read和 Serializable。
问题3中的转账程序应为一个完整的现实业务,就满足原子性。而第7行COMMIT将程序分为了两个事务,不满足现实业务需求,去掉该行即可。
求教几句英语欢迎光临劳力士手表店,有任何买表方面的问题可以询问业务员.英语怎么说应该是欢迎光临劳力 英语 2020-04-09 …
先用一句英语介绍警察这个职业是干什么的,再用一句或两句英语来谈自己对警察这个职业的感想.感想不是说 英语 2020-05-16 …
“养不教父之过”这句俗语强调的是()A.父母对子女有教育的义务B.父母对子女有抚养的义务C.子女对 政治 2020-05-17 …
关于suggest的一个英语句子商务英语里有一个句子:iwillgivehimaringandsu 英语 2020-06-06 …
语病分析今年春季,这个省的沿海地区要完成3700万平方米的河堤加高和河口截流改道工程,任务重、工程 语文 2020-06-19 …
关于六个人点餐的英语情景对话?有一个是服务员,其他五人是吃饭的,要求每人至少三句话,服务员和其中一 英语 2020-07-05 …
请高人帮忙写出一句标语,上一句是“精湛厨艺成就高贵品质”求下一句.备注:是为一个餐饮企业的,中央厨 其他 2020-07-14 …
找出下列没有语病的句子.公务员题下列没有语病的一项是:A.当前,我们的当务之急是利用各种办法提高农民 语文 2020-12-03 …
侠盗飞车罪恶都市,其中的一个任务不会做,这个任务是在第二个城市的,是合唱团的任务,是在电视台旁边的但 其他 2020-12-23 …
请教一句英语,急!THANKS!1.“只要有你我什么都不怕”这句话请帮我用英语翻译出来!2.“只要跟 英语 2020-12-26 …