阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某航空售票系统负责所有本地起飞航班的机票销售,并设有多个机票销售网点。以下为E-SQL编写的部分售票代码:
请根据上述描述,完成下列问题:
【问题1】(5分)
上述售票程序,在并发状态下,可能发生什么错误?产生这种错误的原因是什么?
【问题2】(6分)
若将上述代码封装成一个完整的事务,则:
(1)在并发请求下的响应效率会存在什么问题?
(2)分析产生效率问题的原因。
(3)给出解决方案。
【问题3】(4分)
下面是改写的存储过程,其中flightno为航班号;a为购票数;result为执行状态:1表示成功,0表示失败;表tickets中的剩余机票数balance具有大于等于零约束。请补充完整。
CREATE PROCEDRUE buy_ticket(char[] flightno IN, (a) , int resuit OUT)
AS
BEGIN
.........
UPDATE tickets SET balance= (b)
WHERE flight= flightno;
if (SQLcode<>SUCCESS) { //SQLcode为SQL语句的执行状态
(c) ;
result = 0; return;
}
COMMIT;
(d)
END