2017-10-16 50 views
0

我想将SQL Server中的外键添加到现有表中,但出现错误。任何人都可以帮我吗?虽然alter table在SQL Server中添加外键获取错误

注:objid是存在于表1 &表2

ALTER TABLE table1 
    ADD CONSTRAINT FK_41_PRICE_INST2PRICE_QTY 
    FOREIGN KEY (Table1 PRICE_INST2PRICE_QTY) REFERENCES table2(objid); 

错误:

FK_40_PRICE_INST2PRICE_QTY. The conflict occurred in database "test", table "dbo.table2", column 'objid'.

+1

非常奇怪有一个PRICE_QTY引用一个ID列... – jarlh

回答

0

除了语法错误之外,我认为objid列中有一些值不存在于PRICE_INST2PRICE_QTY表中。你必须检查两列之间的值。这就是为什么你要创建外键来防止这种情况发生。

+0

在表1中,我们确实有“PRICE_INST2PRICE_QTY”&OBJID列,除了这个表2,我们有“OBJID”,whatesle我想我为什么会出现语法错误。 – Shilpi

+0

原因林获取错误的一些价值可为空。感谢 – Shilpi

0

的语法应该是更多的东西是这样的:

ALTER TABLE table1 
    ADD CONSTRAINT FK_41_PRICE_INST2PRICE_QTY 
    FOREIGN KEY (PRICE_INST2PRICE_QTY) REFERENCES table2(objid); 

你不不需要限定列名。

+0

即使我尝试与你提供的仍然得到相同的错误。 – Shilpi

+0

@Shilpi。 。 。将table2.objid声明为主键?外键关系应该是主键。 –

0

请在你列一个快速检查“的ObjID”,不写

FOREIGN KEY (Table1 PRICE_INST2PRICE_QTY) REFERENCES table2(objid); 

它应该更像:

FOREIGN KEY (PRICE_INST2PRICE_QTY) REFERENCES table2(objid); 

不表1,因为你在表1的工作。

+0

是的,即使米不居住表1仍然得到同样的问题 – Shilpi