![](/img/trans.png)
[英]PostreSql: ERROR: column referenced in foreign key constraint does not exist
[英]column “parent_id” referenced in foreign key constraint does not exist when creating SQL table
我是 SQL 新手並試圖理解外鍵語法。 我知道這是在多個問題中被問到的,但我發現的每個問題似乎都沒有告訴我我在這里做錯了什么。 這是我的 SQL 代碼:
CREATE TABLE Customer
(
id int primary key,
name varchar(30),
age int,
gender bool
);
CREATE TABLE Minor
(
FOREIGN KEY (parent_id) REFERENCES Customer(id)
);
CREATE TABLE Adult
(
FOREIGN KEY (parent_id) REFERENCES Customer(id)
);
CREATE TABLE Shop
(
id int primary key
);
CREATE TABLE Drink
(
name varchar(30) primary key
);
CREATE TABLE AlcoholicDrink
(
FOREIGN KEY (name) REFERENCES Drink(name)
);
CREATE TABLE NonAlcoholicDrink
(
FOREIGN KEY (name) REFERENCES Drink(name)
);
這是我得到的錯誤:
ERROR: column "parent_id" referenced in foreign key constraint does not exist
SQL state: 42703
您需要在表中添加字段以進行引用。 像這樣的事情:
CREATE TABLE Customer
(
id int primary key,
name varchar(30),
age int,
gender bool
);
CREATE TABLE Minor
(
minor_id serial primary key,
parent_id int,
other_fields text etc.
FOREIGN KEY (parent_id) REFERENCES Customer(id)
);
這只是它不起作用的原因。
像這樣
CREATE TABLE Customer
(
id int primary key,
name varchar(30),
age int,
gender bool
);
CREATE TABLE Minor
(
parent_id int ,
FOREIGN KEY (parent_id) REFERENCES Customer(id)
);
要添加不只是代碼片段的答案:
您對FOREIGN KEY (parent_id) REFERENCES Customer(id)
想法是正確的。 此位為您的表添加了約束或“規則”。 此約束確保parent_id
在您的Customer
表中保存一個真實的id
。
錯誤消息告訴我們column "parent_id" referenced in foreign key constraint does not exist
。 可以理解,混淆來自將約束聲明誤認為列聲明。
正如其他人指出的那樣,我們需要 10 聲明外鍵約束和 2) 聲明列。
CREATE TABLE Customer
(
id int primary key,
name varchar(30),
age int,
gender bool
);
CREATE TABLE Minor
(
parent_id int, -- Declare the column
FOREIGN KEY (parent_id) REFERENCES Customer(id) -- Declare the constraint
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.