假设同时有两个客户向同一账号发出存款请求,该程序会出现什么问题? (100字以内) 若用SQL语句编写的存款业务事务程序如下: …… START TRANSACTION; SET TRANSACTION ISOLATION LEVEL REA

admin2009-05-15  44

问题 假设同时有两个客户向同一账号发出存款请求,该程序会出现什么问题? (100字以内)
若用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,未实现加权制,不能达到串行化调度。 修改方法:将程序中的SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED改为SET TRANSACTION ISOLATION LEVEL SERIALIZABLE.

解析 该题中因为程序中的隔离级别设置为READ UNCOMMITTED,未实现加权制,不能达到串行化调度。该事务程序不能实现并发的存款业务。
    修改方法:将程序中的SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED改为SET TRANSACTION ISOLATION LEVEL SERIALIZABLE。
转载请注明原文地址:https://jikaoti.com/ti/eex7FFFM
0

相关试题推荐
最新回复(0)