0
我正在使用存儲過程從Available_Tickets表中選擇一個「隨機」行,選擇後如果用戶喜歡該數字,併購買票據,該行將爲從表中刪除。PL/SQL過程數據凍結(保留隨機抽獎券)
我的過程是這樣的:
CREATE OR REPLACE GET_RANDOM_TICKET (RESULT OUT INTEGER) IS
co,mn,mx integer;
BEGIN
SELECT COUNT(ID) , MIN(ID) ,MAX(ID) INTO CO,MN,MX FROM TICKETS;
SELECT TICKET_NUMBER INTO RESULT FROM (
SELECT TICKET_NUMBER
FROM TICKETS WHERE ID >= DBMS_RANDOM(MN,MX)
) WHERE ROWNUM = 1;
END GET_RANDOM_TICKET;
如果用戶同意對返回的數所選擇的行被刪除。 我可以得到一個最壞的情況下,在執行第一個select語句之後,max(id)行被刪除嗎?
編輯1 ---- 這兩個SELECT
語句會不顧表中的變化而看到相同的數據?爲什麼?
請問您可以在答案中添加一些代碼,我希望您注意,刪除是在程序之外完成的,所以如果我將其更改爲更新,並在程序中選擇'for update',那麼保持鎖? – alibttb
對不起,你不需要刪除,你可以將它保存爲未來引用的狀態,正如我之前提到的,你可以根據你的條件狀態來確定票狀態 –