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

Stu*_*han 0 sql sql-server foreign-keys

我正在尝试使用以下查询将外键添加到现有列中

ALTER TABLE Sub_Category_Master 
ADD FOREIGN KEY (Category_ID) REFERENCES Category_Master(Category_ID)
Run Code Online (Sandbox Code Playgroud)

但我遇到一个错误

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

mar*_*c_s 6

那么,错误清楚地告诉你,Category_ID在你的Sub_Category_Master表中包含一些值是不存在Category_Master(列Category_ID)。但这正是具有外键约束的关键-确保子表(Sub_Category_Master)仅使用其父表中的已定义值。

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

ALTER TABLE Sub_Category_Master 
ADD CONSTRAINT FK_SubCategoryMaster_CategoryMaster
    FOREIGN KEY (Category_ID) REFERENCES Category_Master(Category_ID)
Run Code Online (Sandbox Code Playgroud)