我是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
答案 0 :(得分:1)
您需要在表格中添加字段以进行参考。像这样:
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)
);
这就是它无法正常工作的原因。
答案 1 :(得分:1)
喜欢这个
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)
);
答案 2 :(得分:0)
要添加答案而不仅仅是代码段:
您对FOREIGN KEY (parent_id) REFERENCES Customer(id)
有了正确的想法。该位将constraint或“规则”添加到表中。此约束确保parent_id
在您的id
表中拥有真实的Customer
。
该错误消息告诉我们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
);