Web jsp アプリとデータベースがあります。シーケンスと挿入を適切に処理する方法を知りたいです。たとえば、列を持つ予約のテーブルがありますFLIGHT_ID, PASSPORT_ID
。このペアはユニークです。さて、ウェブサイトで受け取ったデータから新しい予約を挿入したいときは、次のようにします。
- 受信データを解析する
BOOKING_ID
シーケンスから新しい値を取得(SELECT SEQ.nextval FROM dual;
)INSERT ...(new_booking_id,...)
クエリを作成する- Oracle DBMS によってスローされた例外を探します (ほとんどの場合、一意の制約違反)
これは正常に機能しますが、select を呼び出すときにシーケンスの値を受け取るため、シーケンスの値の一部を「失い」ますが、それらは使用しません。
うまくいくかもしれないのは、例外をキャッチするたびにシーケンスを 1 ステップ戻すことです。
ALTER SEQUENCE SEQ INCREMENT BY -1;
SELECT SEQ.NEXTVAL FROM DUAL;
ALTER SEQUENCE SEQ INCREMENT BY 1;
しかし、これは最善の方法ではないようです。とは?