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外键约束错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章

sql server怎样删除外键约束?

sql。两个间的外键约束和插入数据问题

sql server 主键与外键约束无法创建

sql server如何添加外键

sql server 查询约束键在哪个表的脚本

在服务器执行 SQL 脚本错误:错误 1215:无法添加外键约束