【问题标题】:How to add foreign key in PostgreSQL如何在 PostgreSQL 中添加外键
【发布时间】:2021-10-23 23:55:04
【问题描述】:

我创建了第一个名为“bookstore”的表,其中主键是 book_name:

create table bookstore (book_name varchar primary key, author varchar, price decimal);

我正在尝试创建第二个名为“name”的表,其中 name 是主键。我想把这个主键-author.name 作为 bookstore.author 的外键。

create table author (name varchar primary key, place varchar,
                    constraint fk_author_bookstore foreign key(name) references bookstore(author));

但错误是:错误:没有唯一约束匹配引用表“书店”的给定键 SQL 状态:42830

我是 SQL 新手,所以希望能得到一些帮助。如果可以,请编写正确的代码。 谢谢

【问题讨论】:

  • 你有这个倒退。书店需要外键来创作。

标签: postgresql database-design foreign-keys constraints primary-key


【解决方案1】:

作者表中的名称列为主键,在书店表中作为外键引用。

-- 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));

请查看网址https://dbfiddle.uk/?rdbms=postgres_11&fiddle=8394f796433ed8bc170c2889286b3fc2

建表后添加外键

-- PostgreSQL(v11)
ALTER TABLE bookstore
      ADD CONSTRAINT fk_author_bookstore FOREIGN KEY (author) 
          REFERENCES author (name);

请查看网址https://dbfiddle.uk/?rdbms=postgres_11&fiddle=d93cf071bfd0e3940dfd256861be813c

【讨论】:

  • 谢谢,我明白了。
  • 如果我在没有分配外键的情况下创建书店表怎么办......以后如何添加它?
  • @EricGideon 欢迎。请在建表后尝试执行alter脚本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多