0

Web jsp アプリとデータベースがあります。シーケンスと挿入を適切に処理する方法を知りたいです。たとえば、列を持つ予約のテーブルがありますFLIGHT_ID, PASSPORT_ID。このペアはユニークです。さて、ウェブサイトで受け取ったデータから新しい予約を挿入したいときは、次のようにします。

  1. 受信データを解析する
  2. BOOKING_IDシーケンスから新しい値を取得( SELECT SEQ.nextval FROM dual;)
  3. INSERT ...(new_booking_id,...)クエリを作成する
  4. Oracle DBMS によってスローされた例外を探します (ほとんどの場合、一意の制約違反)

これは正常に機能しますが、select を呼び出すときにシーケンスの値を受け取るため、シーケンスの値の一部を「失い」ますが、それらは使用しません。

うまくいくかもしれないのは、例外をキャッチするたびにシーケンスを 1 ステップ戻すことです。

ALTER SEQUENCE SEQ INCREMENT BY -1;
SELECT SEQ.NEXTVAL FROM DUAL;
ALTER SEQUENCE SEQ INCREMENT BY 1;

しかし、これは最善の方法ではないようです。とは?

4

1 に答える 1