При создании одной таблицы она ссылается на внешние значения из другой таблицы, то есть реализована связь многие ко многим на примере пользователей и отзывов:
spoilerCREATE TABLE IF NOT EXISTS `task_force`.`users` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`reviews` INT UNSIGNED NOT NULL,
FOREIGN KEY (`reviews`) REFERENCES `reviews` (`id`),
PRIMARY KEY (`id`)
);
CREATE TABLE IF NOT EXISTS `task_force`.`reviews` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`user_id` INT UNSIGNED NOT NULL,
FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
PRIMARY KEY (`id`)
);
Таблица первая не создаётся, так как она не может взять значение из таблицы, которой ещё нет, ведь она расположена ниже:
Как можно описать схему без этих ошибок? Создать сначала таблицы, а потом прописать связи, как отдельный запрос? И есть ли вариант компактного решения в один файл без миграций?