0

問題

ID整数型(主キーでもある)の列を持ついくつかのデータのテーブルがあります。

新しいデータエントリがテーブルに追加されると、新しいIDを取得する必要がありますが、IDはオブジェクトを挿入するアプリケーションによって認識されませんが、データベースによって指定される必要があります。たとえば、IDは0、1、2、...のように割り当てる必要があります。

新しいエントリの他のすべてのデータがあると仮定すると、どのように挿入しますか?通常は:

insert into T values(123, 'data');

しかし、123の代わりに何を置くべきかわかりません-IDを提供するデータベースにある種のグローバル変数を作成NEXTIDし、に挿入する前に毎回この値をクエリ/更新しますTか?

質問

  1. この種の問題をどのように処理しますか?同時実行保存であるソリューションが望ましいです。
  2. Java / myBatisでこれを達成する方法は?テーブル構造に対応するJavaクラスがあり、新しいオブジェクトをデータベースに追加して、新しいIDを自動的に取得する必要があります。

アップデート

私が検索したのは自動インクリメントでした。

  • 列を自動インクリメントとして宣言する標準のSQL方法(データベースに依存しない)はありますか?私はApacheDerbyを使用しておりここGENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1)で提案されています。
  • 自動インクリメント列を含むテーブルへの挿入はどのように見えますか?
  • データベースへの同時アクセスが可能な場合に、挿入後に作成された自動インクリメント値を取得するための最良の方法は何ですか?

宣言と挿入の説明とSQL命令を含む回答を受け入れます:)

4

2 に答える 2

0

sqlserverを使用している場合、IDタイプの列を作成すると、次のような目的が解決されます。

  ALTER TABLE [dbo].[T] ADD [Column1] INT identity (1, 1)

オラクルのような他の人にとっては、単純なデータベースシーケンスのためにあなたはそうすることができます。

于 2013-03-10T14:53:47.707 に答える
0

MySQLでは、使用できます

ALTER TABLE table_name ADD id INT AUTO_INCREMENT;

これは id 列を自動的にインクリメントするため、挿入する必要はありません。

于 2013-03-10T15:04:54.360 に答える