Ответ 1
Значение по умолчанию для 1, которое вы указали для столбца Workspace.WorkspaceSettingsId
, еще не существует в вашей таблице WorkspaceSettings
, следовательно, нарушение FK.
Я немного новичок в написании сценариев в 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, которое вы указали для столбца Workspace.WorkspaceSettingsId
, еще не существует в вашей таблице WorkspaceSettings
, следовательно, нарушение FK.
Просто добавьте следующую фразу после перенастройки таблицы 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