SQL Server外键约束错误[重复]
Posted
技术标签:
【中文标题】SQL Server外键约束错误[重复]【英文标题】:SQL Server foreign key constraint error [duplicate] 【发布时间】:2016-02-01 09:39:48 【问题描述】:我有下表:
CREATE TABLE [dbo].[Comment]
(
[CommentID] INT NOT NULL PRIMARY KEY,
[CommentContent] NVARCHAR(MAX) NULL,
[CommentDateTime] DATETIME2 NULL,
[ArticleID] INT NULL,
[ResponseTo] INT NULL,
CONSTRAINT [FK_dbo.Comment_dbo.Article_ArticleID]
FOREIGN KEY ([ArticleID])
REFERENCES [dbo].[Article] ([ArticleID]) ON DELETE CASCADE,
CONSTRAINT [FK_dbo.Comment_dbo.Comment_ResponseTo]
FOREIGN KEY ([ResponseTo])
REFERENCES [dbo].[Comment] ([CommentID]) ON DELETE CASCADE
)
我收到关于无法创建约束的错误:
错误:SQL72014:.Net SqlClient 数据提供者: 消息 1785,第 16 级,状态 0,第 1 行 在表 'Comment' 上引入 FOREIGN KEY 约束 'FK_dbo.Comment_dbo.Comment_ResponseTo' 可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
它说明了周期...我该如何解决?
【问题讨论】:
TL;DR,如何解决这个问题?删除“级联”?? 【参考方案1】:将 CASCADE
更改为 NO ACTION
有效。
CREATE TABLE [dbo].[Comment]
(
[CommentID] INT NOT NULL PRIMARY KEY,
[CommentContent] NVARCHAR(MAX) NULL,
[CommentDateTime] DATETIME2 NULL,
[ArticleID] INT NULL,
[ResponseTo] INT NULL,
CONSTRAINT [FK_dbo.Comment_dbo.Article_ArticleID] FOREIGN KEY ([ArticleID])
REFERENCES [dbo].[Article] ([ArticleID]) ON DELETE CASCADE,
CONSTRAINT [FK_dbo.Comment_dbo.Comment_ResponseTo] FOREIGN KEY ([ResponseTo])
REFERENCES [dbo].[Comment] ([CommentID]) ON DELETE NO ACTION
)
【讨论】:
以上是关于SQL Server外键约束错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章