@paralolik

Как этот SQL-синтакс для PSTGRESQL будет выглядить в MARIADB?

Я новичок в базах данных, пишу программу, которая работает на MariaDB.

Есть SQL, написанный для постгри, но я не могу понять как он должен выглядеть в марии
CREATE TABLE images (
       image_id SERIAL PRIMARY KEY,
       filename TEXT NOT NULL UNIQUE
);

CREATE TABLE tags (
       tag_id SERIAL PRIMARY KEY,
       tag    TEXT NOT NULL UNIQUE
);

CREATE TABLE images_tags (
       PRIMARY KEY (tag_id, image_id),
       image_id INTEGER NOT NULL REFERENCES images (image_id),
       tag_id   INTEGER NOT NULL REFERENCES tags (tag_id)
);
  • Вопрос задан
  • 51 просмотр
Решения вопроса 1
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
Это решение работает в MariaDB:
CREATE TABLE images (
  image_id INTEGER AUTO_INCREMENT PRIMARY KEY, 
  filename VARCHAR(255) NOT NULL UNIQUE
);

CREATE TABLE tags (
  tag_id INTEGER AUTO_INCREMENT PRIMARY KEY, 
  tag VARCHAR(255) NOT NULL UNIQUE
);

CREATE TABLE images_tags (
  image_id INTEGER NOT NULL, 
  tag_id INTEGER NOT NULL, 
  PRIMARY KEY (tag_id, image_id), 
  FOREIGN KEY (tag_id) REFERENCES tags(tag_id),
  FOREIGN KEY (image_id) REFERENCES images(image_id)
);


Здесь вы можете протестировать SQL запросы
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Melkij
@Melkij
PostgreSQL DBA
SERIAL => INT AUTO_INCREMENT

text не может быть unique в mysql/mariadb. Вы должны выбрать префикс по которому считать уникальность. Например, сделать varchar(максимальное допустимое число символов) вместо text.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы