FOREIGN KEY SAME TABLE错误 - 但外键不存在

时间:2014-09-16 12:38:02

标签: sql sql-server tsql

我正在尝试添加引用同一个表的外键约束。

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Documents_Parent]') AND parent_object_id = OBJECT_ID(N'[dbo].[Documents]'))
BEGIN
    ALTER TABLE [dbo].[Documents]  WITH CHECK ADD  CONSTRAINT [FK_Documents_Parent] FOREIGN KEY(LinkedDocumentId)
    REFERENCES [dbo].[Documents] ([Id])
END

关系FK_Documents_Parent不存在。

但是,它会引发错误:

  

ALTER TABLE语句与FOREIGN KEY SAME TABLE约束" FK_Documents_Parent"冲突。冲突发生在数据库" dev",table" dbo.Documents",column' Id'。

1 个答案:

答案 0 :(得分:1)

如果表中已有数据,则document_parent列中的所有值都应该出现在列id中,否则会出错。

如果我们想要允许,可以使用WITH NOCHECK

http://technet.microsoft.com/en-us/library/ms177463(v=sql.105).aspx