閱讀下列說明,回答問題1至問題3,將解答填入答題紙的對應(yīng)欄內(nèi)。
【說明】
某航空售票系統(tǒng)負責(zé)所有本地起飛航班的機票銷售,并設(shè)有多個機票銷售網(wǎng)點。以下為E-SQL編寫的部分售票代碼:
請根據(jù)上述描述,完成下列問題:
【問題1】(5分)
上述售票程序,在并發(fā)狀態(tài)下,可能發(fā)生什么錯誤?產(chǎn)生這種錯誤的原因是什么?
【問題2】(6分)
若將上述代碼封裝成一個完整的事務(wù),則:
(1)在并發(fā)請求下的響應(yīng)效率會存在什么問題?
(2)分析產(chǎn)生效率問題的原因。
(3)給出解決方案。
【問題3】(4分)
下面是改寫的存儲過程,其中flightno為航班號;a為購票數(shù);result為執(zhí)行狀態(tài):1表示成功,0表示失敗;表tickets中的剩余機票數(shù)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語句的執(zhí)行狀態(tài)
(c) ;
result = 0; return;
}
COMMIT;
(d)
END