シーケンス を使用したい 。
2つの注意事項:
-
AUTO_INCREMENTこの記事で説明されている機能は非標準であり、別のデータベースに移動するときに移植性の問題が発生する可能性があります。 -
INSERTの場合 が中止されても、シーケンスの数値はまだ消費されているため、シーケンスに穴が開いてしまう可能性があります。それが受け入れられない場合は、プライマリ(代理)キーに自動生成されたシーケンスを使用し、そのキーとは別のマップを「公式」シーケンス番号に追加して、そのテーブルのインデックスに一意性を適用します。
別の方法は、UNIQUEを適用することです データベース内で、適切なTRANSACTION ISOLATION LEVELを使用します。 INSERTの失敗を処理するアプリケーションロジックを追加します 。