0

これらの列を持つテーブルがあります:

  • Id(主キー): ID。
  • OwnerId(外部キー): 別のテーブルに存在する所有者の ID。
  • TypeId(外部キー): このレコードが表すもののタイプ。有限数のタイプがあり、別の表に表されています。これはそのテーブルにリンクします。
  • TypeCreatorId(ForeignKey): TypeId で表される型の所有者。
  • SourceId(Foreign Key): これはこの質問にとって重要ではありません。

Id ごとに、各 TypeCreatorId が 1 つだけ存在できるように、このテーブルを制約する必要があります。それが理にかなっていることを願っています!

4

2 に答える 2

1

OwnerIdとに一意のインデックスを作成するだけTypeCreatorIdです。

MySQL を使用した例 (申し訳ありませんが、SQL Server は使用していません):

alter table yourTable
    add unique index idx_newIndex(OwnerId, TypeCreatorId);

例。この新しい一意のインデックスで何が起こるかをここに示します。

OwnerId | TypeCreatorId
--------+--------------
   1    |    1
   1    |    2          -- This is Ok
   2    |    1          -- Ok too
   2    |    2          -- Ok again
   1    |    2          -- THIS WON'T BE ALLOWED because it would be a duplicate
于 2013-07-15T19:38:34.420 に答える