問題
ID
整数型(主キーでもある)の列を持ついくつかのデータのテーブルがあります。
新しいデータエントリがテーブルに追加されると、新しいIDを取得する必要がありますが、IDはオブジェクトを挿入するアプリケーションによって認識されませんが、データベースによって指定される必要があります。たとえば、IDは0、1、2、...のように割り当てる必要があります。
新しいエントリの他のすべてのデータがあると仮定すると、どのように挿入しますか?通常は:
insert into T values(123, 'data');
しかし、123の代わりに何を置くべきかわかりません-IDを提供するデータベースにある種のグローバル変数を作成NEXTID
し、に挿入する前に毎回この値をクエリ/更新しますT
か?
質問
- この種の問題をどのように処理しますか?同時実行保存であるソリューションが望ましいです。
- Java / myBatisでこれを達成する方法は?テーブル構造に対応するJavaクラスがあり、新しいオブジェクトをデータベースに追加して、新しいIDを自動的に取得する必要があります。
アップデート
私が検索したのは自動インクリメントでした。
- 列を自動インクリメントとして宣言する標準のSQL方法(データベースに依存しない)はありますか?私はApacheDerbyを使用しており、ここ
GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1)
で提案されています。 - 自動インクリメント列を含むテーブルへの挿入はどのように見えますか?
- データベースへの同時アクセスが可能な場合に、挿入後に作成された自動インクリメント値を取得するための最良の方法は何ですか?
宣言と挿入の説明とSQL命令を含む回答を受け入れます:)