我如何在postgresql中引用varchar

问题描述 投票:0回答:1
CREATE TABLE IF NOT EXISTS boards (
    id           SERIAL PRIMARY KEY,
    title        VARCHAR(45),
    description  VARCHAR(140)
);

CREATE TABLE IF NOT EXISTS posts (
    id           SERIAL PRIMARY KEY,
    board_id     INTEGER REFERENCES boards(id) NOT NULL,
    board_title  VARCHAR(45) REFERENCES boards(title) NOT NULL
};

我想使用与参考

board_id
相同的技术,但它不起作用。

我也尝试过

TEXT REFERENCES boards(title) NOT NULL
,但它又不起作用了。

sql database postgresql reference
1个回答
0
投票

这没有任何意义,原因有两个。

  1. 您已经确切知道每个
    boards
    行与什么
    posts
    行相关,您已经定义了外键。
  2. 无需将板标题存储在
    posts
    表上 - 它是在
    boards
    上定义的。

如果你真的想这样做(但你不想这样做 - 这是一个坏主意),那么你需要阅读 PostgreSQL 打印的错误消息(并且你没有提供 - 在提出问题时始终提供错误消息) .

there is no unique constraint matching given keys for referenced table "boards"

您无法定义对非唯一列的引用,并且

title
boards
表上不是唯一的(也可以为空)。您需要使其唯一且不为空。

© www.soinside.com 2019 - 2024. All rights reserved.