我有一個Microsoft SQL Server數據庫,我嘗試更新大約8個表。我創建臨時表,刪除現有表,將臨時表重命名爲最終名稱,然後創建索引和外鍵約束以加快查找速度。SQL Server:添加外鍵錯誤
問題是,當我嘗試在重命名的表上創建外鍵約束時,我收到以下錯誤。
ALTER TABLE語句與FOREIGN KEY約束條件衝突 「FK__maintenance_interval_id」。衝突發生在數據庫 「vehicle_data」,表「MAINTENANCE_INTERVAL」,列 'maintenance_interval_id'。
這是造成問題的原因
ALTER TABLE VEH_ENG_MAINTENANCE_INTERVAL
ADD CONSTRAINT FK_maintenance_interval_id FOREIGN KEY (maintenance_interval_id)
REFERENCES MAINTENANCE_INTERVAL(maintenance_interval_id)
人士指出,這可能是由每個表中的列數據的不匹配造成的聲明。有沒有簡單的方法來檢查這個?兩個表都有數千個條目。
CREATE TABLE語句:
CREATE TABLE [vehicle_data].[dbo].[MAINTENANCE_INTERVAL]
[maintenance_interval_id] int,
[interval_type] varchar(32),
[value] decimal(18,2),
[units] varchar(32),
[initial_value] decimal(18,2),
PRIMARY KEY CLUSTERED ([maintenance_interval_id] ASC))
你想添加一個外鍵,但表中的數據不按規則行事 - 很明顯,你必須在'已在'maintenance_interval_id'不存在作爲一種價值VEH_ENG_MAINTENANCE_INTERVAL'數據MAINTENANCE_INTERVAL.maintenance_interval_id中的值-....需要首先修復數據問題然後建立FK關係 –
嘗試運行此SQL以查看是否可以找到有關特定FK約束的信息:SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS WHERE CONSTRAINT_NAME = N'FK__LKP_VEH_E__maint__6B79F03D」 ..假設你不知道這個FK是從哪裏來的,因爲它不是你想加(如果你不是,你應該正確地命名您的FK約束的一個) – pmbAustin
你爲什麼又問同樣的問題? [SQL主鍵異常]的 –