Задать вопрос
@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)
);
  • Вопрос задан
  • 52 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 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
DBA Team для вашего PostgreSQL?
SERIAL => INT AUTO_INCREMENT

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

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

Похожие вопросы