我有一张名为Animal
的表格。 AnimalId
是主要关键&我想将列AnimalType_id
设置为UNIQUE(我有一个AnimalType
表,需要在这里设置一个外键)
ALTER TABLE Animal
ADD UNIQUE Animal.AnimalType_id int
两个表中都有数据,因此我无法删除表。
然而,这会导致错误:
Msg 102,Level 15,State 1,Line 2
附近的语法不正确
'。'。
答案 0 :(得分:15)
有关如何添加表约束的信息,请参阅documentation。
ALTER TABLE Animal ADD CONSTRAINT UQ_Animal_AnimalTypeId UNIQUE (AnimalType_id)
听起来像AnimalType_id是一个外键,所以我只是想通过使这个专栏独一无二来检查你是否理解这一点,你就是一对一的关系 - 你只能拥有每种类型的一只动物。
由于您在添加唯一约束时出错,我建议您实际需要外键而不是唯一约束:
ALTER TABLE Animal
ADD CONSTRAINT FK_Animal_AnimalType
FOREIGN KEY
(
AnimalType_id
)
REFERENCES AnimalType
(
id
)
我必须猜测AnimalType表名的名称及其主键列名称 - 如果它们不正确,请更改这些名称。
答案 1 :(得分:2)
如果你养成了为你创建的所有对象(甚至是约束)赋予名字的习惯,那么稍后当你需要禁用,删除或改变约束时,你将有更多的时间:
ALTER TABLE Animal ADD CONSTRAINT UQ_Animal_Type UNIQUE (AnimalType_id)
通过创建唯一索引,也可以获得更灵活的类约束效果。
答案 2 :(得分:0)
我认为你正在尝试这样做:
ALTER TABLE Animal
ADD COLUMN AnimalType_id int;
答案 3 :(得分:0)
列中的数据似乎并不是唯一的。 当您在列上创建唯一约束时,您不能有任何重复的条目(最多可以有一个空值)
答案 4 :(得分:-1)
试试这个
ALTER TABLE table_name ADD CONSTRAINT UNIQUE(column_name)