如何将外键添加到SQL Server 2012中的现有列

时间:2017-03-17 07:14:32

标签: sql sql-server foreign-keys

我正在尝试使用以下查询

将外键添加到我现有的列中
ALTER TABLE Sub_Category_Master 
ADD FOREIGN KEY (Category_ID) REFERENCES Category_Master(Category_ID)

但我收到了错误

  

ALTER TABLE语句与FOREIGN KEY约束“FK__Sub_Categ__Categ__5812160E”冲突。冲突发生在数据库“shaadikarbefikar_new”,表“shaadikarbefikar.Category_Master”,列“Category_ID”。

3 个答案:

答案 0 :(得分:6)

嗯,错误清楚地告诉您Category_ID表中的Sub_Category_Master包含Category_Master中{strong>不存在的一些值(Category_ID列})。但这正是拥有外键约束的关键 - 确保您的子表(Sub_Category_Master)仅使用其父表中的定义的值。

因此,在能够建立此外键关系之前,必须首先修复这些“voodoo”值。我也强烈建议强烈建议明确命名这个约束,以避免那些系统生成但不是非常有用的约束名称,如FK__Sub_Categ__Categ__5812160E

ALTER TABLE Sub_Category_Master 
ADD CONSTRAINT FK_SubCategoryMaster_CategoryMaster
    FOREIGN KEY (Category_ID) REFERENCES Category_Master(Category_ID)

答案 1 :(得分:1)

ALTER TABLE Sub_Category_Master
ADD CONSTRAINT FKSub_Category_Master_Category_ID FOREIGN KEY (Category_ID)
    REFERENCES  Category_Master(Category_ID);

答案 2 :(得分:-4)

CREATE TABLE Orders 
(
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),

    CONSTRAINT FK_PersonOrder 
        FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);