Firebird で自動インクリメント列を持つ唯一の方法は、ジェネレーターをセットアップし、それをトリガーで使用することです。
H2 db には、それを行うための auto_increment および identity キーワードがあります。
最善の方法は何ですか?
Mysql も auto_increment を使用しますが、ccurrence の読み取りとテーブルのロックに問題がありますね。
ありがとうございました。
Firebird で自動インクリメント列を持つ唯一の方法は、ジェネレーターをセットアップし、それをトリガーで使用することです。
H2 db には、それを行うための auto_increment および identity キーワードがあります。
最善の方法は何ですか?
Mysql も auto_increment を使用しますが、ccurrence の読み取りとテーブルのロックに問題がありますね。
ありがとうございました。
いいえ、同時読み取りとテーブル ロックの問題はありません。
各 RDBMS 固有の疑似キー機能を使用する利点は、RDBMS エンジンが ID 値の割り当てをアトミックに処理するため、同時クライアントが同じ ID 値を割り当てないことです。テーブル全体ではなく、内部IDカウンターの簡単なロックのみが必要です。
最善の方法は重要ではありません。使用している RDBMS が提供する機能を使用する必要があります。残念ながら、疑似キーは SQL:2003 まで ANSI SQL 標準で定義されていませんでした。その時までに、各ベンダーは独自の機能と構文を作成していました。
SEQUENCE
オブジェクトのようなオブジェクトを使用します。GENERATOR
SEQUENCE
IDENTITY
列オプションとして使用します。AUTO_INCREMENT
疑似データ型もサポートしています。SERIAL
H2 が と の両方IDENTITY
をサポートする場合AUTO_INCREMENT
、おそらく、MySQL または Microsoft SQL Server から移行する人々にとって、より使い慣れたものになるでしょう。H2 はわかりませんが、両方の構文形式が同じ内部機能にアクセスしていると思います。
H2のドキュメントを見つけました。の両方に表示されIDENTITY
、AUTO_INCREMENT
a を使用しSEQUENCE
ます。