1

SQLが別のテーブルの主キーではない一意の列値を適用する方法はありますか?

たとえばTblDog、次のフィールドがあるとします。

  1. DogId-Primary Key
  2. DogTag-Integer
  3. DogNumber-varchar

およびフィールドは一意である必要がDogTagありDogNumberますが、どの種類のテーブルにもリンクされていません。

私が考えることができる唯一の方法は、作成または編集DogTagする前に(現在のレコードが更新されている場合を除いて)一致するレコードをプルし、一致するレコードをプルするDogNumberことです。これは、レコードを作成/編集する前のデータベースへの2回の呼び出しです。

私の質問はEntity Frameworks:これらの値をキーとして設定せずに、または(DBを過度に呼び出さずに)一意になるようにSQLを設定する方法はありますか?

2つの呼び出しを1つにグループ化できることは理解していますが、どちらのフィールドが複製されたか(または両方)をユーザーに正確に通知できる必要があります。

編集:データベースはSQL Server2008R2です。

4

5 に答える 5

4

MilkywayJoeが示唆しているように、SQLデータベースで一意のキー制約を使用します。これらは、挿入+更新中にチェックされます。

ALTER TABLE TblDog ADD CONSTRAINT U_DogTag UNIQUE(DogTag)

ALTER TABLE TblDog ADD CONSTRAINT U_DogNumber UNIQUE(DogNumber)
于 2012-07-09T15:39:31.997 に答える
3

エントリの重複を防ぐために、一意の制約/インデックスを設定することをお勧めします。

于 2012-07-09T15:39:12.103 に答える
1

ALTER TABLE TblDog ADD CONSTRAINT U_DogTag UNIQUE(DogTag)

于 2012-07-09T15:49:46.920 に答える
0

Entity Frameworkが(まだ)サポートしているようには見えませんが、カード上にありましコメントに記載されているように、一意の制約を使用してデータベースで直接これを行う必要があるようです。

于 2012-07-09T15:39:22.813 に答える
0

CREATE UNIQUE INDEX idxUniqueDog ON TblDog (DogTag, DogNUmber)

于 2012-07-09T15:40:17.287 に答える