我在 postgres 数据库中创建了这两个表,我试图将第二个表中的第一个 uuid 键添加为外键,但弹出此错误
column "book_id" referenced in foreign key constraint does not exist
这是第一个表
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)
);
最佳答案
您的代码中存在多个问题。我建议:
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
对于货币金额来说是一个糟糕的选择。您应该使用数字/小数。
我也不知道你想建模什么。但我怀疑你想要一张 table readers
每个“读者”一行,然后是 readerBooks
的另一个表读者阅读的每本书一行。
关于sql - 我无法添加外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65615123/