我有一张桌子叫Animal
. AnimalId
是主键&我想将该列设置AnimalType_id
为唯一(我有一个AnimalType
表,需要在这里设置一个外键)
ALTER TABLE Animal
ADD UNIQUE Animal.AnimalType_id int
两个表中已经有数据,因此我无法删除该表。
然而,这会导致错误:
消息 102,级别 15,状态 1,第 2 行
'.' 附近的语法不正确。
我有一张桌子叫Animal
. AnimalId
是主键&我想将该列设置AnimalType_id
为唯一(我有一个AnimalType
表,需要在这里设置一个外键)
ALTER TABLE Animal
ADD UNIQUE Animal.AnimalType_id int
两个表中已经有数据,因此我无法删除该表。
然而,这会导致错误:
消息 102,级别 15,状态 1,第 2 行
'.' 附近的语法不正确。
请参阅文档以了解如何添加表约束。
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 表名的名称和它的主键列名 - 如果它们不正确,请更改它们。
如果您养成为您创建的所有对象(甚至约束)命名的习惯,那么以后需要禁用、删除或更改约束时会更容易:
ALTER TABLE Animal ADD CONSTRAINT UQ_Animal_Type UNIQUE (AnimalType_id)
通过创建唯一索引也可以获得更灵活的类似约束的效果。
我认为您正在尝试这样做:
ALTER TABLE Animal
ADD COLUMN AnimalType_id int;
该列中的数据似乎不是唯一的。在列上创建唯一约束时,不能有任何重复的条目(最多可以有一个空值)
尝试这个
ALTER TABLE table_name 添加约束唯一(column_name)