проблема mariaDB. Попытка создать таблицу с помощью Constraint с множественным выбором - PullRequest
0 голосов
/ 29 марта 2020

У меня есть следующий код, который я пытаюсь выполнить

CREATE TABLE ShoppingCentreShop (
CentreCode varchar(255),
ShopNo int,
Category  varchar(255),
CustomerRating int,
**CONSTRAINT CHK_Category CHECK ( Category in ('FASHION', 'ENTERTAINMENT','FOOD')),**
CONSTRAINT CHK_CustomerRating CHECK ( CustomerRating between 1 and 5),
CONSTRAINT fk_ShoppingCentre_CentreCode FOREIGN KEY (CentreCode)  REFERENCES ShoppingCentre(CentreCode),
CONSTRAINT fk_Shop_ShopNo FOREIGN KEY (ShopNo)  REFERENCES Shop(ShopNo)
);

, и я получаю следующие коды ошибок

  1. «Ожидается имя символа! Зарезервированное ключевое слово нельзя использовать в качестве имени столбца без обратных кавычек. (возле "ПРОВЕРКА" в позиции 147)
  2. Неожиданное начало утверждения. (возле «Категория» в позиции 155)
  3. Нераспознанный тип оператора. (около "in" в позиции 164)

в жирной строке кода появляется ошибка "Я новичок в MySQL, поэтому любая помощь будет принята с благодарностью

РЕДАКТИРОВАТЬ : я также получаю следующую строку ошибки "# 1005 - Невозможно создать таблицу shopping_centres. shoppingcentreshop (errno: 150" Неправильно сформировано ограничение внешнего ключа ") (Подробности ...)"

1 Ответ

0 голосов
/ 29 марта 2020

Почему вы не используете ENUM ()?

CREATE TABLE ShoppingCentreShop
(
  CentreCode varchar(255),
  ShopNo int,
  Category ENUM('FASHION','ENTERTAINMENT','FOOD'),
  CustomerRating int,
  CONSTRAINT CHK_CustomerRating CHECK (CustomerRating BETWEEN 1 AND 5),
  CONSTRAINT fk_ShoppingCentre_CentreCode FOREIGN KEY (CentreCode) REFERENCES ShoppingCentre(CentreCode),
  CONSTRAINT fk_Shop_ShopNo FOREIGN KEY (ShopNo) REFERENCES Shop(ShopNo)
)
...