在部署中,我必須回滾,因爲SQL導致了FOREIGN KEY CONSTRAINT錯誤。該表有數百萬行。任何人都可以在這個SQL中看到任何會導致這個問題的東空FK引用導致FK約束錯誤
我不再有原來的消息得心應手這樣的:
外鍵約束 「FSomeTable1」
...這是字面上非常香草
其他信息:
- 這是一個新的列
- 的種子數據是另一個腳本執行,所以沒有數據是
tResult_Status
但
表定義:
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]
部署腳本聲明:
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
你能說明總的錯誤信息嗎 – TheGameiswar
這兩列的數據類型是什麼?你可以發佈(部分)爲FK中使用的兩個表創建表格腳本嗎? – Pred
select * from SomeTable WHERE Result_Status_Id NOT IN(SELECT result_Status_id FROM tResult_Status)應該顯示違規的行嗎? SomaTable中的字段是否爲NULLABLE? – AntDC