検索

ホームページ  >  に質問  >  本文

SequenceGenerator が ID 値をスキップするのはなぜですか?

次のコードでアーティスト ID を設定します:

リーリー

私の ArtistId が時々値をスキップして順序が狂う理由を誰かが説明してもらえますか?無効なデータをテーブルに挿入しようとしても (例外がスローされた場合)、データはテーブル エントリによって拒否されますが、artistId は目に見えずに入力されることに気付きました。これにより、テーブルは次の状態になります:

###名前### ###姓### 1マーシャルトゥパック前述したように、既に存在するアーティストを挿入しようとしているため、ArtistId 値 2 はスキップされますが、一意である必要があるように設定しました。したがって、例外がスローされ、データは拒否されますが、値 2 の ID は何らかの形で埋められます (またはスキップされます)。この状況を回避するには、どうすればこの問題を解決できるでしょうか。助けていただけますか?
P粉919464207P粉919464207318日前427

全員に返信(2)返信します

  • P粉547420474

    P粉5474204742024-03-29 16:10:10

    Oracle データベースを使用しているようですね。 ID は挿入前に生成されるため、挿入に失敗すると ID が失われます。さらに、サーバー クラスターを使用する場合、ID 範囲が各サーバーに割り当てられ、連続した挿入間で大幅に異なる可能性があります。 簡単に言うと、ID が連続していて、値が欠落していないことは信頼できないということです。これは他のデータベースでも機能する可能性が高くなります。

    返事
    0
  • P粉898049562

    P粉8980495622024-03-29 13:28:53

    これはほぼ通常の動作です。

    シーケンス ジェネレーターの唯一の役割は、さまざまな整数値を生成することだけであり、それ以上のことはありません。

    返事
    0
  • キャンセル返事
  • アーティストID
    マザーズ 3
    シャクール