@viktorross

Как вставить данные сразу в 2 объединенные таблицы?

есть 2 таблицы или допустим будет 3, поля этих таблиц я объединяю через left outer join, все поля уникальные. при выполнении insert into или update использовать эти таблицы, как единую по принципу left outer join, чтобы были задействованы все поля при вставке или обновлении, проблема разделения на 2 запроса в том, что полей много и в какой таблице будет храниться набор необходимых полей для вставки неизвестно, как составить такой запрос? Если бы допустим была возможность вставить один и тот же набор данных в 2 таблицы по очереди в несколько запросов проигнорировав поля, которых не существует, то было бы проще
  • Вопрос задан
  • 65 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Akina
Сетевой и системный админ, SQL-программист.
в какой таблице будет храниться набор необходимых полей для вставки неизвестно

Бред сивой кобылы (извиняюсь). Структура (точные имена полей, и в какой таблице какое поле) обязана быть заранее известна. Даже если используется псевдодинамическая структура на базе EAV или иным способом организованная.

у меня есть 2 таблицы или допустим будет 3 ... Я хочу при выполнении insert into или update использовать эти таблицы

MySQL не реализует одновременную вставку в более чем одну таблицу. А также не реализует использование запроса на вставку в CTE. Напрямую задача не решается.

Правильная реализация - создание хранимой процедуры, которая принимает значения для всех параметров, и выполняет вставку нужных значений в таблицы последовательно выполняемыми запросами, при необходимости получая значения автоинкрементных полей из предыдущей вставки.

Возможная (но нерекомендуемая) реализация - триггер на базовой таблице и передача параметров для подчинённых таблиц через определённые пользователем переменные.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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