我希望基于3列在表上创建唯一约束,其中2列必须具有相同的值。例如:
|猫| 4 | 5 |
|狗| 4 | 7 |
|猫| 4 | 7 | < - 允许因为cat和4相同且第3列不同
|猫| 5 | 1 | < - 不允许,因为cat需要在第二列中有4个
|猫| 4 | 5 | < - 不允许,因为所有3列都与第一条记录相同
有没有办法在sql server中约束这个?
答案 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)