如何在 PostgreSQL 中添加外键
How to add foreign key in PostgreSQL
我创建的第一个 table 名为 'bookstore',其中主键是 book_name:
create table bookstore (book_name varchar primary key, author varchar, price decimal);
我正在尝试创建一个名为 'name' 的第二个 table,其中名称是主键。我想将此主键 - author.name 作为 bookstore.author 的外键。
create table author (name varchar primary key, place varchar,
constraint fk_author_bookstore foreign key(name) references bookstore(author));
但错误是:错误:没有与给定键匹配的引用 table“书店”的唯一约束
SQL 状态:42830
我是SQL的新手,所以,希望得到一些帮助。如果可以,请写出正确的代码。
谢谢
作者 table 中的姓名列是主键,它在书店 table 中作为外键引用。
-- PostgreSQL (v11)
create table author (name varchar primary key, place varchar);
create table bookstore (book_name varchar primary key, author varchar, price decimal
, CONSTRAINT fk_author_bookstore
FOREIGN KEY(author)
REFERENCES author(name));
请从urlhttps://dbfiddle.uk/?rdbms=postgres_11&fiddle=8394f796433ed8bc170c2889286b3fc2
检查
在table创建后添加外键
-- PostgreSQL(v11)
ALTER TABLE bookstore
ADD CONSTRAINT fk_author_bookstore FOREIGN KEY (author)
REFERENCES author (name);
请检查 url https://dbfiddle.uk/?rdbms=postgres_11&fiddle=d93cf071bfd0e3940dfd256861be813c
我创建的第一个 table 名为 'bookstore',其中主键是 book_name:
create table bookstore (book_name varchar primary key, author varchar, price decimal);
我正在尝试创建一个名为 'name' 的第二个 table,其中名称是主键。我想将此主键 - author.name 作为 bookstore.author 的外键。
create table author (name varchar primary key, place varchar,
constraint fk_author_bookstore foreign key(name) references bookstore(author));
但错误是:错误:没有与给定键匹配的引用 table“书店”的唯一约束 SQL 状态:42830
我是SQL的新手,所以,希望得到一些帮助。如果可以,请写出正确的代码。 谢谢
作者 table 中的姓名列是主键,它在书店 table 中作为外键引用。
-- PostgreSQL (v11)
create table author (name varchar primary key, place varchar);
create table bookstore (book_name varchar primary key, author varchar, price decimal
, CONSTRAINT fk_author_bookstore
FOREIGN KEY(author)
REFERENCES author(name));
请从urlhttps://dbfiddle.uk/?rdbms=postgres_11&fiddle=8394f796433ed8bc170c2889286b3fc2
检查在table创建后添加外键
-- PostgreSQL(v11)
ALTER TABLE bookstore
ADD CONSTRAINT fk_author_bookstore FOREIGN KEY (author)
REFERENCES author (name);
请检查 url https://dbfiddle.uk/?rdbms=postgres_11&fiddle=d93cf071bfd0e3940dfd256861be813c