问题 问答题

[说明]


某省会城市XX长途汽车售票系统负责所有本地长途汽车站各班次的汽车票销售,并在该省会城市和全省主要地级市设有多个该长途汽车票销售网点,各售票网点使用相同的售票程序。假设售票程序中用到的伪指令如表8-2所示。


假设某售票网点一次售出n张长途汽车班次A的汽车票,则售票程序的伪指令序列为:R(A,x);W(A,x-n)。根据上述业务及规则,完成下列问题。
1. 若两个售票网点同时销售长途汽车班次A的汽车票,在数据库服务器端可能出现如下的调度。
A:R1(A,x), R2(A,x), W1(A,x-3), W2(A,x-2);
B:R1(A,x), W1(A,x-3),R2(A,x), W2(A,x-2);
C:R1(A,x), R2(A,x), W2(A,x-2), W1(A,x-3);
其中Ri(A,x),Wi(A,x)分别表示第i个销售网点的读写操作,其余类同。
假设当前长途汽车班次A剩余15张汽车票,分析上述3个调度各自执行完后的剩余票数,并指出其中错误的调度,简要分析产生错误的主要原因。

答案

参考答案:(1)SERIALIZABLE
(2) balance = :x
(3) ROLLBACK WORK
(4) COMMT WORK

解析:
这是一道要求读者掌握2PL协议理论与SQL中的隔离级别,以及嵌入式SQL的编程实践题。在嵌入式SQL编程中,使用标准SQL定义的隔离级别来实现事物并发执行下的一致性控制,4个隔离级别分别为Read Uncommitted、Read committed、Repeatable Read和Serializable。依题意,在题干所给出的长途汽车票销售程序中,空缺处(1)要补充的是可串行化调度级别,即SERlIALIZABLE。
空缺处(2)要补充的是嵌入式SQL的更新语句,即应填入balance = :x。
空缺(3)要补充的是嵌入式SQL中的事务回退语句,即应填入ROLLBACK WORK,以表示事务执行不成功地结束时通知系统已发生错误,数据库可能处在不正确的状态,该事务对数据库的所有更新必须被撤销,数据库应恢复该事务到初始状态。
空缺(4)要补充的是嵌入式SQL中的事务提交语句,即应填入COMMIT WORK,以表示事务执行成功地结束。此时告诉系统,数据库要进入一个新的正确状态,该事务对数据库的所有更新都已交付实施(写入磁盘)。

选择题
问答题

2005年4月6日,江昌公司与省农贸公司签订了进口尿素的购销合同,合同约定:江昌公司向农贸公司提供进口尿素3万吨,每吨单价700元,交货时间为同年6月初,在4月底农贸公司应付百分之十的款项,交货地点在省灵东码头。合同还对尿素的质量、包装、给付货款期限等违约责任等做了规定。合同签订后,江昌公司于5月2日向农贸公司提出按合同约定预付货款的要求,但农贸公司迟迟未付。后来因江昌公司货源落空,无法履行合同,双方发生纠纷。农贸公司于2005年7月30日向人民法院提出诉讼,要求江昌公司履行合同,赔偿经济损失并承担逾期交货的违约金。江昌公司则辩称,本合同属无效合同,其不负任何违约责任。人民法院经过审理判决:合同有效,江昌公司未按照合同履行义务,属于违约行为,应当支付给农贸公司违约金50万元,案件受理费2万元由江昌公司全部承担。江昌公司不服,提出上诉,称一审判决在事实的认定上有错误,要求确认合同无效。二审法院经过审理,认为合同有效,上诉人没有按合同约定供货应承担违约责任,但被上诉人没有按合同预付款项向人民法院要求赔偿经济损失,也应当承担一定的责任。故依法改判为各自承担自己的经济损失,一、二审诉讼费由双方分担。 问题:

如果二审法院查明由于泊顺进出口公司的违约直接导致江昌公司的履行不能,遂追加泊顺进出口公司为第三人,并判决泊顺进出口公司承担责任。请问二审法院的做法是否妥当为什么