我试图添加引用同一张表的外键约束。
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不存在。
FK_Documents_Parent
但是,它会引发错误:
ALTER TABLE语句与FOREIGN KEY SAME TABLE约束“ FK_Documents_Parent”冲突。在数据库“ dev”的表“ dbo.Documents”的列“ Id”中发生了冲突。
如果表中已经有数据,则在document_parent列中的所有值都应出现在列ID中,否则您将得到一个错误。
如果我们愿意,可以使用WITH NOCHECK
http://technet.microsoft.com/zh- cn/library/ms177463(v=sql.105).aspx