Перейти к содержимому

Фотография

Помогите разобраться в sql.


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 Anders138

Anders138

    Новый участник

  • Members
  • Pip
  • 14 сообщений

Отправлено 06 марта 2019 - 15:20

Надо создать таблицу Books, в которой publisher_number = publisher_number в другой таблице. Делаю так:

CREATE TABLE Books (Art INTEGER PRIMARY KEY, FOREIGN KEY(Publisher_number) REFERENCES Publisher(Publisher_number), Title VARCHAR(100), Binding VARCHAR(30), Pages INT);

Выдает ошибку: ncaught Error: unknown column "Publisher_number" in foreign key definition

Схема таблицы, к которой надо привязать:

CREATE TABLE Publisher ( Publisher_number INTEGER PRIMARY KEY, Publisher_name VARCHAR(50))

Где у меня ошибка?

 


  • 0

#2 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 06 марта 2019 - 17:11

1. Проверить, что таблица на которую вы ссылаетесь уже существует.
2. Назовите колонку как-нибудь иначе, например добавьте  префикс fk_ ( не факт что проблема в этом, но большие дяди, с которыми я работал, всегда обозначали в названии поля что оно foreign key. И даже если не решите проблему - по крайней мере узнаете с каким из Publisher_number проблема)

 

ЗЫ помнить, что сессии в sql  изолированные, пока вы в одной не сделали commit сделанные в ней изменения, например созданная таблица, не будут видны в другой сессии.


  • 0

#3 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 809 сообщений
  • ФИО:Dmitry Petrov

Отправлено 07 марта 2019 - 09:11

для того чтобы присвоить фореджин кей колонке, её сначала надо создать.

CREATE TABLE Books (
  Art INTEGER PRIMARY KEY,
  fk_pubID INTEGER,
  FOREIGN KEY (fk_pubID) REFERENCES publisher (publisher_number),
  Title VARCHAR(100),
  Binding VARCHAR(30),
  Pages INT
);


  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных