簡體   English   中英

創建SQL表時,外鍵約束中引用的列“parent_id”不存在

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM