小编典典

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

sql

我试图添加引用同一张表的外键约束。

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”的表“
dbo.Documents”的列“ Id”中发生了冲突。


阅读 161

收藏
2021-03-17

共1个答案

小编典典

如果表中已经有数据,则在document_parent列中的所有值都应出现在列ID中,否则您将得到一个错误。

如果我们愿意,可以使用WITH NOCHECK

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

2021-03-17