sql - 键中命名的列 "sn"不存在 LINE 6 : PRIMARY KEY (SN, PN, JN)

标签 sql database postgresql

我用以下查询创建了 3 个表:

S表:

CREATE TABLE S (
    SN INT,
    SNAME CHAR(10),
    RATING FLOAT,
    CITY CHAR(10),
    PRIMARY KEY (SN)
)

J表:

CREATE TABLE J (
    JN INT,
    JNAME CHAR(10),
    CITY CHAR(10),
    PRIMARY KEY (JN)
)

P表:

CREATE TABLE P (
    PN INT,
    PNAME CHAR(10),
    COLOR CHAR(10),
    CITY CHAR(10),
    WEIGHT FLOAT,
    PRIMARY KEY (PN)
)

他们成功创建,没有任何错误。

问题是,当我尝试运行以下查询时,我遇到了一个奇怪的错误:

 CREATE TABLE SPJ (
    QTY INT,
    FOREIGN KEY (SN) REFERENCES S(SN),
    FOREIGN KEY (PN) REFERENCES P(PN),
    FOREIGN KEY (JN) REFERENCES J(JN),
    PRIMARY KEY (SN, PN, JN)
)

ERROR: column "sn" named in key does not exist LINE 6: PRIMARY KEY (SN, PN, JN)

最佳答案

您需要创建列和外键。它们的外键不创建列,它们实际上只是约束。

CREATE TABLE SPJ (
    QTY INT,
    SN  INT,
    PN  INT,
    JN  INT,
    FOREIGN KEY (SN) REFERENCES S(SN),
    FOREIGN KEY (PN) REFERENCES P(PN),
    FOREIGN KEY (JN) REFERENCES J(JN),
    PRIMARY KEY (SN, PN, JN)
)

关于sql - 键中命名的列 "sn"不存在 LINE 6 : PRIMARY KEY (SN, PN, JN),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53580049/

相关文章:

arrays - PostgreSQL - 如何获取列列表中的元素数

sql - 异步回调 - gwt

sql - 如果引用 ID 为 NULL,则递归获取父 ID

c# - 并行执行查询会导致更多时间 [SQL Server]

postgresql - 在 Windows 8.1 上安装 psycopg2

postgresql - Docker Compose with PostgreSQL 和 Prometheus PostgreSQL Exporter 拒绝连接?

mysql - 为什么操作数应该只包含一列?

mysql - 如何将逻辑数据模型转换为物理数据模型

python - 将 View 链接到 Django 链接

database - DBCP 连接池登录超时