【发布时间】:2014-11-10 05:10:06
【问题描述】:
我正在尝试添加一个引用同一个表的外键约束。
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”中。
【问题讨论】:
-
您确定表中当前没有与外键冲突的数据吗?即:没有没有对应Id的LinkedDocumentId?
-
尝试从这个表生成一个 CREATE 命令 e 检查约束是否真的不存在。 sys 视图可能有问题。
标签: sql sql-server tsql