问答题

案例分析题

阅读下列说明,回答问题1至问题3。
【说明】
某银行的存款业务分为如下三个过程:
(1)读取当前账尸余额,记为R(b):
(2)当前余额b加上新存入的金额x作为新的余额b,即b=b+ x;
(3)将新余额b写入当前账户,记为W(b)。
存款业务分布于该银行各营业厅,并允许多个客户同时向同一账户存款,针对这一需求,完成下述问题。

【问题3】
若用SQL语句编写的存款业务事务程序如下:

START TRANSACTION;
SET TRANSACTION
ISOLATION LEVEL READ UNCOMMITTED
UPDATE Accounts
SET CurrentBalance
= CurrentBalance + Amount
WHERE AccountID =
AccountNo;
COMMIT;

其中:Accounts 为账户表,CurrentBalance
为当前余额,Amount为新存入的金额,AccountNo为外部输入的账户编码。
该事务程序能否正确实现并发的存款业务如果不能,请说明原因,应做怎样的修改
(100字以内)

【参考答案】

不能实现,因为程序中的隔离级别设置为READ UNCOMMITTED,未实现加锁控制,不能达到串行化调度。 修改方法: ......

(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)