首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >键中命名的列"sn“不存在第6行:主键(SN、PN、JN)

键中命名的列"sn“不存在第6行:主键(SN、PN、JN)
EN

Stack Overflow用户
提问于 2018-12-02 12:05:09
回答 2查看 986关注 0票数 1

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

S表:

代码语言:javascript
复制
CREATE TABLE S (
    SN INT,
    SNAME CHAR(10),
    RATING FLOAT,
    CITY CHAR(10),
    PRIMARY KEY (SN)
)

J表:

代码语言:javascript
复制
CREATE TABLE J (
    JN INT,
    JNAME CHAR(10),
    CITY CHAR(10),
    PRIMARY KEY (JN)
)

P表:

代码语言:javascript
复制
CREATE TABLE P (
    PN INT,
    PNAME CHAR(10),
    COLOR CHAR(10),
    CITY CHAR(10),
    WEIGHT FLOAT,
    PRIMARY KEY (PN)
)

并且他们成功地创建了没有任何错误。

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

代码语言:javascript
复制
 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)
)

错误:键中命名的列"sn“不存在第6行:主键(SN、PN、JN)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-02 12:10:43

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

代码语言:javascript
复制
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)
)
票数 3
EN

Stack Overflow用户

发布于 2018-12-02 12:11:05

首先声明每个列,然后声明对另一个表的引用:

代码语言:javascript
复制
 CREATE TABLE SPJ (
    QTY INT,
    SN INTEGER REFERENCES S(SN),
    PN INTEGER REFERENCES P(PN),
    JN INTEGER REFERENCES J(JN),
    PRIMARY KEY (SN, PN, JN)
)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53580049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档