出于某種原因,我得到沒有唯一約束匹配參考表“accident_location”的給定鍵。我正在使用 postgresql 創建表。這里有什么錯誤?因為我在我的事故位置表上設定了 ID 和 address_ID 的主鍵
CREATE TABLE IF NOT EXISTS Accident(
ID varchar(10) NOT NULL,
Severity INT,
Start_Time varchar(100) NOT NULL,
End_Time varchar(100) NOT NULL,
Description varchar(100),
PRIMARY KEY(ID)
);
CREATE TABLE IF NOT EXISTS Accident_Location(
ID varchar(10),
Address_ID INT,
Start_lat float,
Start_Lng float,
End_Lat float,
End_Lng float,
"Distance(mi)" float,
PRIMARY KEY (ID,Address_ID),
FOREIGN KEY (ID) REFERENCES Accident(ID)
);
CREATE TABLE IF NOT EXISTS Address(
Address_ID INT,
Number INT,
Street varchar(100),
Side varchar(5) ,
City varchar(50) NOT NULL,
County varchar(50) ,
State varchar(10) NOT NULL,
Zipcode varchar(15) NOT NULL,
Country varchar(5) ,
Timezone varchar(30) ,
Airport_code varchar(10),
Location_ID INT NOT NULL,
Weather_ID INT NOT NULL,
PRIMARY KEY (Address_ID),
FOREIGN KEY (Address_ID) REFERENCES Accident_Location(Address_ID)
);
uj5u.com熱心網友回復:
Address 表上參考的 Address_ID 在表 Accident_Location 上應該是唯一的。
Accident_Location將表更改為
CREATE TABLE IF NOT EXISTS Accident_Location(
ID varchar(10),
Address_ID INT constraint unx_addres_id_location unique,
Start_lat float,
Start_Lng float,
End_Lat float,
End_Lng float,
"Distance(mi)" float,
PRIMARY KEY (ID,Address_ID),
FOREIGN KEY (ID) REFERENCES Accident(ID)
);
在這里,我在 Address_ID 上添加了一個唯一約束
Address_ID INT constraint unx_addres_id_location unique
更新
由于您將 Accident_Location 表的 Address_ID 稱為 Address 表的外鍵,這將迫使您將其設為唯一記錄。這意味著任何兩行或更多行不應具有相同的 Address_ID 值。否則,Address 表上的外鍵 Address_ID 將不知道您指的是哪一行。
您沒有看到 Accident 表的相同錯誤的原因是默認情況下主鍵是唯一的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/451181.html
標籤:PostgreSQL
下一篇:如何從字串中提取日期
