我有 N:M 的情況,但我不能使用 2 個非唯一值中的任何一個作為外鍵有人可以幫忙嗎?Platform_Id 和 Station_Id 都不能在 Platform_Host 表中設定為外鍵。
CREATE TABLE Repair_Platform
(
Platform_Id INT NOT NULL,
Station_Id INT NOT NULL,
Mechanic_Id INT NOT NULL UNIQUE,
Validation_Num INT NOT NULL,
CONSTRAINT Platform_fk1
FOREIGN KEY (Station_Id) REFERENCES Repair_Station (Station_Id),
CONSTRAINT Platform_fk2
FOREIGN KEY (Mechanic_Id) REFERENCES Engineer (Engineer_Id),
CONSTRAINT Platform_pk
PRIMARY KEY (Station_Id, Platform_Id)
);
CREATE TABLE Platform_Host
(
Station_Id INT NOT NULL,
Platform_Id INT NOT NULL,
Vehicle_Id VARCHAR(8) NOT NULL,
DateTime DATE NOT NULL,
CONSTRAINT Host_fk1
FOREIGN KEY (Station_Id) REFERENCES Repair_Platform (Station_Id),
CONSTRAINT Host_fk2
FOREIGN KEY (Vehicle_Id) REFERENCES Vehicle (License_Plate),
CONSTRAINT Host_fk3
FOREIGN KEY (Platform_Id) REFERENCES Repair_Platform (Platform_Id)
);
錯誤:
ORA-02270: 此列串列沒有匹配的唯一鍵或主鍵 02270. 00000 - “此列串列沒有匹配的唯一鍵或主鍵”
*原因:CREATE/ALTER TABLE 陳述句中的 REFERENCES 子句給出了列串列在參考的表中沒有匹配的唯一鍵或主鍵約束。
< *操作:使用 ALL_CONS_COLUMNS 目錄視圖查找正確的列名
uj5u.com熱心網友回復:
您需要參考 Repair_Platform 的整個主鍵 - 如下所示:
CREATE TABLE Platform_Host
(
-- columns
-- constraints
CONSTRAINT Host_fk3
FOREIGN KEY (StationId, Platform_Id)
REFERENCES Repair_Platform (StationId, Platform_Id)
);
你不能只參考主鍵的一部分——這是一個全有或全無的交易。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/461904.html
