创建 SQL table 时外键约束中引用的列 "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)
你的想法是正确的。此位向您的 table 添加 constraint 或“规则”。此约束确保 parent_id
在您的 Customer
table.
中包含真实的 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
);
我是 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)
你的想法是正确的。此位向您的 table 添加 constraint 或“规则”。此约束确保 parent_id
在您的 Customer
table.
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
);