引用同一个表的两列上的表中的外键约束

时间:2014-02-13 05:07:58

标签: sql-server

我有一个表项目主文件,其中我有一个主键作为项目代码

tbl_item_master

Itm_code int PK

物料清单(tbl_Bom)

child_id int parent_id int

我有另一张物料清单(tbl_bom)表,其中有2列父母和子女,它们的值不是物品主人的主键。即BOM中的父和子ID来自Item Master的主键。 Follwoing是我用于在子级和父级上应用外键的脚本。

CREATE TABLE dbo.BOM_MASTER
(
    BOM_SrNo                     INT CONSTRAINT DF_BOM_MASTER_BOM_SrNo DEFAULT ((0)) NOT NULL,
    BOM_Key                      INT NOT NULL,
    PD_Key                       INT,
    BOM_Level                    INT,
    BOM_Parent_Code              VARCHAR (50),
    BOM_Child_Code               VARCHAR (50),
    BOM_UOM                      INT,
    BOM_Qty                      DECIMAL (14, 2),
    BOM_Final_Version            INT,
    BOM_ItemDimension_Applicable BIT,
    BOM_MatType                  INT CONSTRAINT DF__BOM_MASTE__BOM_M__192BAC54 DEFAULT ((0)) NOT NULL,
    CONSTRAINT FK_BOM_MASTER_Project_Details_Master FOREIGN KEY (PD_Key) REFERENCES dbo.Project_Details_Master (PD_Key),
    CONSTRAINT FK_BOM_MASTER_tbl_itm_master FOREIGN KEY (BOM_Parent_Code) REFERENCES tbl_itm_master (BSL_COST_ITEM_Item_SAP_Code),
    CONSTRAINT FK_BOM_MASTER_tbl_itm_master FOREIGN KEY (BOM_Child_Code) REFERENCES tbl_itm_master (BSL_COST_ITEM_Item_SAP_Code)
)
GO

我收到以下错误

无法创建名为“FK_BOM_MASTER_tbl_itm_master”的两个约束。不允许重复的约束名称。严重程度16

1 个答案:

答案 0 :(得分:1)

如果添加换行符,问题就会变得很明显。

CREATE TABLE dbo.BOM_MASTER
(
    BOM_SrNo INT CONSTRAINT DF_BOM_MASTER_BOM_SrNo DEFAULT ((0)) NOT NULL, 
    BOM_Key INT NOT NULL, 
    PD_Key INT, 
    BOM_Level INT, 
    BOM_Parent_Code VARCHAR (50), 
    BOM_Child_Code VARCHAR (50), 
    BOM_UOM INT, 
    BOM_Qty DECIMAL (14, 2), 
    BOM_Final_Version INT, 
    BOM_ItemDimension_Applicable BIT,
    BOM_MatType INT CONSTRAINT DF__BOM_MASTE__BOM_M__192BAC54 DEFAULT ((0)) NOT NULL, 
    CONSTRAINT FK_BOM_MASTER_Project_Details_Master FOREIGN KEY (PD_Key) REFERENCES dbo.Project_Details_Master (PD_Key), 
    CONSTRAINT FK_BOM_MASTER_tbl_itm_master FOREIGN KEY (BOM_Parent_Code) REFERENCES tbl_itm_master (BSL_COST_ITEM_Item_SAP_Code), 
    CONSTRAINT FK_BOM_MASTER_tbl_itm_master FOREIGN KEY (BOM_Child_Code) REFERENCES tbl_itm_master (BSL_COST_ITEM_Item_SAP_Code)
)
GO

最后2个名字相同。很明显还有其他命名问题。什么是DF__BOM_MASTE__BOM_M__192BAC54?该表的未来用户是否能够从这个命名中获取任何内容?