私はストアド・プロシージャを使用してAvailable_Ticketsテーブルから「Random」行を選択します。選択した後、その番号を好きなユーザーはチケットを購入します。テーブルから削除されます。ユーザーが選択した行が削除されて返された番号に同意すれば、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
の2つのステートメントは、同じデータがテーブルの変更を反映して表示されますか?なぜ?
答えにいくつかのコードを追加してもらえますか?私は、削除がプロシージャの外で行われていることに気付かれたいのですが、私はそれをアップデートに変更し、ロックを維持しますか? – alibttb
あなたは削除する必要はありません。将来の参照のために販売されている状態で保管することができます。 –