但外键不存在

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

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'。


如果表中已经有数据,那么列documents_parent中的所有值都应该出现在列ID中,否则会出错。

如果我们想允许的话,你可以使用WITH NOCHECK

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

链接地址: http://www.djcxy.com/p/65889.html

上一篇: but foreign key doesn't exist

下一篇: 2 foreign key to the same table may cause cycles or multiple cascade paths