更改表和添加UNIQUE键会导致错误

Tec*_*Guy 3 sql sql-server sql-server-2008

我有一张叫做的桌子Animal.AnimalId是主键,我想将列设置AnimalType_id为UNIQUE(我有一个AnimalType表,需要在这里设置一个外键)

ALTER TABLE Animal
ADD UNIQUE Animal.AnimalType_id int
Run Code Online (Sandbox Code Playgroud)

两个表中都有数据,因此我无法删除表.

但是这会导致错误:

消息102,级别15,状态1,行2
'''附近的语法不正确.

Dan*_*haw 17

请参阅文档以了解如何添加表约束.

ALTER TABLE Animal ADD CONSTRAINT UQ_Animal_AnimalTypeId UNIQUE (AnimalType_id)
Run Code Online (Sandbox Code Playgroud)

听起来像AnimalType_id是一个外键,所以我只是想通过使这个专栏独一无二来检查你是否理解这一点,你就是一对一的关系 - 你只能拥有每种类型的一只动物.

由于您在添加唯一约束时出错,我建议您实际需要外键而不是唯一约束:

ALTER TABLE Animal
    ADD CONSTRAINT FK_Animal_AnimalType
    FOREIGN KEY
    (
        AnimalType_id
    )
    REFERENCES AnimalType
    (
        id
    )
Run Code Online (Sandbox Code Playgroud)

我不得不猜测AnimalType表名的名称和它的主键列名 - 如果它们不正确,请更改它们.