我无法添加外键

时间:2021-01-07 15:21:01

标签: sql postgresql

我在 postgres 数据库中创建了这两个表,我试图将第二个表中的第一个 uuid 键添加为外键,但出现此错误

<块引用>

外键约束中引用的列“book_id”不存在

这是第一张桌子

CREATE TABLE books(
book_id uuid DEFAULT uuid_generate_v4(),
book_title VARCHAR(255) NOT NULL,
book_categ VARCHAR(255),
book_price FLOAT
);

这是我尝试添加外键的第二个表

CREATE TABLE reader(
reader_id uuid DEFAULT uuid_generate_v4(),
reader_fullname VARCHAR(255) NOT NULL,
reader_CIN VARCHAR(255),
reader_adress VARCHAR(255),
FOREIGN KEY (book_id) REFERENCES books(book_id)
);

1 个答案:

答案 0 :(得分:2)

您的代码的多个问题。我建议:

CREATE TABLE books (
    book_id uuid DEFAULT uuid_generate_v4() PRIMARY KEY,
    book_title VARCHAR(255) NOT NULL,
    book_categ VARCHAR(255),
    book_price NUMERIC(20, 4)
);

CREATE TABLE readers (
    reader_id uuid DEFAULT uuid_generate_v4(),
    reader_fullname VARCHAR(255) NOT NULL,
    reader_CIN VARCHAR(255),
    reader_address VARCHAR(255),
    book_id uuid,
    FOREIGN KEY (book_id) REFERENCES books(book_id)
);

注意事项:

  • 需要主键定义在所述第一表中。
  • 您需要在第二个表来定义列。
  • FLOAT为货币量的不好的选择。您应该使用数字/小数。

我也不知道你想什么模型。但我怀疑的是,你要一个表readers每个“读者”一排,然后另一个表readerBooks,每本书一行,一个阅读器读取。

相关问题