Null FK referenceen verursacht einen FK Constraint Error

In einer Bereitstellung musste ich zurückrollen, weil der SQL einen FOREIGN KEY CONSTRAINT Fehler verursacht hat. Der Tisch hat Millionen von Reihen. Kann jemand irgendetwas in diesem SQL sehen, das das verursachen würde?

Ich habe nicht mehr die ursprüngliche Nachricht so handlich wie folgt:

AUSLÄNDISCHE KEY-Einschränkung "FSomeTable1"

… es war buchstäblich sehr Vanille

ANDERE INFORMATIONEN:

  • Das war eine NEUE SPALTE
  • Die SEED DATA sollte in einem anderen Skript ausgeführt werden, also gab es noch keine data in tResult_Status

TABELLE BEGRIFFSBESTIMMUNGEN:

 CREATE TABLE [dbo].[SomeTable]( [Claim_ID] [varchar](25) NOT NULL, ...other columns do exist... [Result_Status_Id] [uniqueidentifier] NULL, PRIMARY KEY CLUSTERED ( [Claim_ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY] ) ON [PRIMARY] CREATE TABLE [stp].[tResult_Status]( [Result_Status_Id] [UNIQUEIDENTIFIER] NOT NULL CONSTRAINT [DResult_Status] DEFAULT (NEWSEQUENTIALID()), [Result_Status_Name] [NVARCHAR](50) NOT NULL, [System_Value_Indicator] [BIT] NOT NULL, [Executed_By_Name] [NVARCHAR](400) NOT NULL, [Executed_Datetime] [DATETIME] NOT NULL, CONSTRAINT [PResult_Status] PRIMARY KEY CLUSTERED ( [Result_Status_Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] 

DEPLOYMENT SCRIPT AUSSAGEN:

 ALTER TABLE [dbo].[SomeTable] WITH CHECK ADD CONSTRAINT [FSomeTable1] FOREIGN KEY([Result_Status_Id]) REFERENCES [dbo].[tResult_Status] ([Result_Status_Id]) GO ALTER TABLE [dbo].[SomeTable] CHECK CONSTRAINT [FSomeTable1] GO 

Sein, weil Sie einen Wert in SomeTable haben, der keinen entsprechenden Wert in tResult_Status hat, kann die FK-Einschränkung nicht erstellt werden. Sie können feststellen, welche datasätze keine gültigen Werte mit einer solchen Abfrage haben (basierend auf Ihren Tabellennamen).

 SELECT * FROM SomeTable s WHERE NOT EXISTS (SELECT 1 FROM tResult_Status r WHERE r.Result_Status_Id = s.Result_Status_Id)