Не уверен, почему эта синтаксическая ошибка происходит - PullRequest
0 голосов
/ 12 октября 2018

Привет, я не очень хорошо знаком с MySQL, так как только начал использовать его сегодня и продолжаю получать эту синтаксическую ошибку, и я не совсем уверен, в чем проблема.Я приложил снимок экрана кода и также вставил его ниже с ошибкой, выделенной жирным шрифтом.

Извините, если это глупая ошибка, которую легко исправить, я просто неуверен, как это исправить и был бы очень признателен за любую помощь.

CREATE TABLE copy (
    `code` INT NOT NULL,
    isbn CHAR(17) NOT NULL,
    duration TINYINT NOT NULL,
    CONSTRAINT pkcopy  PRIMARY KEY (isbn, `code`),
    CONSTRAINT fkcopy FOREIGN KEY (isbn) REFERENCES book (isbn));

CREATE TABLE student (
    `no` INT NOT NULL,
    `name` VARCHAR(30) NOT NULL,
    school CHAR(3) NOT NULL,
    embargo BIT NOT NULL,
    CONSTRAINT pkstudent PRIMARY KEY (`no`));

CREATE TABLE loan (
    `code` INT NOT NULL,
    `no` INT NOT NULL,
    taken DATE NOT NULL,
    due DATE NOT NULL,
    `return` DATE NULL,
    CONSTRAINT pkloan PRIMARY KEY (taken, `code`, `no`),
    CONSTRAINT fkloan FOREIGN KEY (`code`, `no`) REFERENCES copy, student **(**`code`, `no`));

1 Ответ

0 голосов
/ 12 октября 2018

Сначала создайте таблицы, затем используйте инструкцию ALTER TABLE, чтобы добавить внешние ключи по одному.Вы не сможете вызывать две разные таблицы по внешнему ключу, поэтому вам придется использовать идентификатор, который сопоставляется с обеими.Вот пример добавления внешних ключей после создания таблицы:

Добавление новой таблицы с именем vendors и изменение таблицы продуктов для включения поля id поставщика:

USE dbdemo;

CREATE TABLE vendors(
    vdr_id int not null auto_increment primary key,
    vdr_name varchar(255)
)ENGINE=InnoDB;

ALTER TABLE products 
ADD COLUMN vdr_id int not null AFTER cat_id;

ToЧтобы добавить внешний ключ в таблицу продуктов, используйте следующий оператор:

ALTER TABLE products
ADD FOREIGN KEY fk_vendor(vdr_id)
REFERENCES vendors(vdr_id)
ON DELETE NO ACTION
ON UPDATE CASCADE;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...