ALTER TABLE语句与外键约束冲突。

16

我在SQL脚本编写方面有些新手,遇到了一个错误,以下是出现问题的部分:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE dbo.WorkspaceSettings
(
    Id INT NOT NULL IDENTITY PRIMARY KEY ,
        ReportColorRGB1 VARCHAR(15) NOT NULL DEFAULT '61,105,138' ,
    ReportColorRGB2 VARCHAR(15) NOT NULL DEFAULT '180,210,121' 
)

GO

ALTER TABLE Workspace ADD WorkspaceSettingsId int NOT NULL default 1;

GO
ALTER TABLE Workspace
ADD CONSTRAINT FK_WorkspaceSettings_Workspace
FOREIGN KEY (WorkspaceSettingsId)
REFERENCES WorkspaceSettings(Id);
GO

我收到以下错误信息:

Msg 547,Level 16,State 0,Line 1
ALTER TABLE语句与外键约束“FK_WorkspaceSettings_Workspace”冲突。 冲突发生在数据库“ClearRisk2_0”,表“dbo.WorkspaceSettings”,列'Id'中。

请问有人能告诉我哪里出错了吗?

2个回答

39
您在Workspace.WorkspaceSettingsId列中指定的默认值为1,在您的WorkspaceSettings表中尚不存在,因此出现了外键约束冲突。

-1

在 ALTER TABLE 语句后面添加以下短语:

with nocheck

所以,它将是:

Use Database_name

Go
    ALTER TABLE ResultScan with nocheck
      ADD CONSTRAINT FK_ResultScan_ListVM FOREIGN KEY (TypeAnVirus)     
      REFERENCES ListVM (Id)     
      ON DELETE CASCADE    
      ON UPDATE CASCADE    
   ;    
  GO

重要的是要解释这里的“无检查”是什么意思。很可能这不会解决问题,只会隐藏它并在以后造成更大的问题。 - AJ X.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接