2017-03-17 98 views
0

我嘗試使用下面的查詢如何在SQL Server中的外鍵添加到現有列2012

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'。

+0

是否每個類別ID是子..存在於目標表中? – TZHX

+0

@marc_s它還沒有工作。仍然出現錯誤。 ALTER TABLE語句與FOREIGN KEY約束「FK_SubCategoryMaster_CategoryMaster」衝突。衝突發生在數據庫「shaadikarbefikar_new」,表「shaadikarbefikar.Category_Master」,列'Category_ID'。 –

回答

-2
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) 
); 
3

那麼,錯誤清楚地告訴你,Category_IDSub_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) 
1
ALTER TABLE Sub_Category_Master 
ADD CONSTRAINT FKSub_Category_Master_Category_ID FOREIGN KEY (Category_ID) 
    REFERENCES Category_Master(Category_ID); 
相關問題