столбец «sn», указанный в ключе, не существует ЛИНИЯ 6: ПЕРВИЧНЫЙ КЛЮЧ (SN, PN, JN) - PullRequest
0 голосов
/ 02 декабря 2018

Я создал 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)
)

ОШИБКА: столбец "sn" с именем в ключе не существует LINE6: ПЕРВИЧНЫЙ КЛЮЧ (SN, PN, JN)

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

Сначала вы объявляете каждый столбец, а затем ссылку на другую таблицу:

 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)
)
0 голосов
/ 02 декабря 2018

Вам нужно создать столбцы И внешние ключи.Эти внешние ключи не создают столбцы, они на самом деле просто ограничения.

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)
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...