需要基于3列的表的唯一约束,其中2列必须具有相同的值

时间:2016-06-01 18:32:08

标签: sql sql-server constraints unique-constraint

我希望基于3列在表上创建唯一约束,其中2列必须具有相同的值。例如:

|猫| 4 | 5 |

|狗| 4 | 7 |

|猫| 4 | 7 | < - 允许因为cat和4相同且第3列不同

|猫| 5 | 1 | < - 不允许,因为cat需要在第二列中有4个

|猫| 4 | 5 | < - 不允许,因为所有3列都与第一条记录相同

有没有办法在sql server中约束这个?

1 个答案:

答案 0 :(得分:2)

要完成这项工作,您必须重新设计表格并将其标准化为:

Animal
------
AnimalId           int (pk)
AnimalName         varchar    [your 1st column goes here]
SomeNumber         int        [your 2nd column goes here]

YourOriginalTable
-----------------
AnimalId           int (fk)
SomeOtherNumber    int        [your 3rd column goes here]

使用此表结构,您现在可以定义以下2个唯一约束来以您希望的方式限制值:

  • Animal (AnimalName)
  • YourOriginalTable (AnimalId, SomeOtherNumber)