我正在尝试添加引用同一个表的外键约束。
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'。
答案 0 :(得分:1)
如果表中已有数据,则document_parent列中的所有值都应该出现在列id中,否则会出错。
如果我们想要允许,可以使用WITH NOCHECK
http://technet.microsoft.com/en-us/library/ms177463(v=sql.105).aspx