2

MS SQLに2つの異なるテーブル、たとえばユーザーとグループがあり、どちらもID列が必要です。2つのID列に自動増分を作成することは可能ですか?これら2つのテーブルに共通の情報を含む3番目のテーブルが必要であり、一意のレコードを識別したいと思います。

OracleにはSEQUENCEがあります。

それは可能ですか?

ありがとう、

マーティンピルチ

4

3 に答える 3

2

Afaik、SQL Serverには、複数のテーブルで名前付きIDを使用できるという概念がありません(cfr。Oracles SEQUENCE) 。

両方のテーブルからのデータを区別するためのいくつかのオプションがあります

  • 両方のテーブルのID列としてGUIDを使用します。
  • 3番目のテーブルで、両方のテーブルの1つのIDを操作すると、再び一意のIDになります(たとえば、-1を掛けます)。3番目のテーブルは他の両方のテーブルのビューになると思います。
  • なぜそのような構成が必要になるのかについて、設計を再考してください。

デザインを変更できない場合は、GUIDを使用することをお勧めします。

于 2010-06-23T09:12:23.337 に答える
0

SQL Serverの場合、Identityプロパティを取得しました。

3番目のテーブルは、外部キーを介してユーザーとグループを参照する必要があります。

3番目のテーブルの両方の列の一意性を実現するには、次のように一意性制約を使用します。

CREATE TABLE Third (
  id_user INT references Users(id),
  id_group INT references Groups(id),
  CONSTRAINT user_group_unique UNIQUE(id_user, id_group)
);
于 2010-06-23T08:49:51.620 に答える
0

何を探しているのか正確にはわかりませんが、次のIDENTITYプロパティを使用してSQLServerに自動インクリメントフィールドを設定できます。

CREATE TABLE new_employees
(
 id_num int IDENTITY(1,1),
 fname varchar (20),
 minit char(1),
 lname varchar(30)
);

上記の例(リンクされたページから取得)では、id_numフィールドは1のシードから開始し、1ずつインクリメントして自動的にインクリメントします。

各テーブルにこのようなフィールドを設定し、2つをリンクする多対多のテーブルを作成できます。

于 2010-06-23T08:50:51.470 に答える