Заявление ALTER TABLE противоречило ограничениям FOREIGN KEY

Я немного новичок в написании сценариев в 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, уровень 16, состояние 0, строка 1
Оператор ALTER TABLE противоречил ограничениям FOREIGN KEY "FK_WorkspaceSettings_Workspace". Конфликт произошел в базе данных "ClearRisk2_0", в таблице "dbo.WorkspaceSettings", в столбце "Id".

Может кто-нибудь скажет мне, где я ошибаюсь?

Ответы

Ответ 1

Значение по умолчанию для 1, которое вы указали для столбца Workspace.WorkspaceSettingsId, еще не существует в вашей таблице WorkspaceSettings, следовательно, нарушение FK.

Ответ 2

Просто добавьте следующую фразу после перенастройки таблицы ALTER:

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