Обновление/Вставка в несколько таблиц данные одним запросом?

Ссылка скопирована
1 ответ

У меня есть две таблицы: global, users
Мне нужно одним запросом либо обновить существующие данные в обеих таблицах либо создать новые записи.
В таблице global есть колонка id которая генерируется автоматически базой при вставке новых записей.
users так-же содержит id который относится к айди из global.

Дополнительно:

не нужно

  • Мне нужно одним запросом либо обновить существующие данные в обеих таблицах либо создать новые записи.

    А откуда требование "одним запросом"? Есть особый тайный смысл?

  • ThunderCat, тайного смысла нет. Просто мне кажется, что вместо нескольких запросов возможно всё сделать нормально одним.
  • Тогда так и надо писать, что не "нужно", а "кажется".
    И вам всегда подскажут что надо делать, когда кажется.
  • Ответы:

    транзакция

    Триггер: после (или до) действий с одной таблицей, выполняет действия во второй.
    Хранимая процедура: получая данные как параметры, разносит их по обоим таблицам.

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Стас DB Ответ

    Для обновления или вставки данных в несколько таблиц одним запросом в MySQL можно воспользоваться оператором JOIN. Этот метод позволяет объединить несколько таблиц для выполнения операций обновления или вставки данных.

    Для обновления данных в нескольких таблицах одним запросом можно использовать следующий синтаксис:

    UPDATE table1
    JOIN table2 ON table1.id = table2.id
    SET table1.column1 = value1, table2.column2 = value2
    WHERE условие

    В этом запросе мы объединяем две таблицы (table1 и table2) по ключу id и обновляем значения столбцов column1 и column2 в каждой из таблиц.

    Для вставки данных в несколько таблиц одним запросом можно воспользоваться следующим синтаксисом:

    INSERT INTO table1 (column1, column2)
    VALUES (value1, value2);
     
    SET @last_id = LAST_INSERT_ID();
     
    INSERT INTO table2 (table1_id, column3)
    VALUES (@last_id, value3);

    В этом примере мы сначала вставляем данные в table1 и сохраняем ID в переменной @last_id с помощью функции LAST_INSERT_ID(). Затем мы используем это значение для вставки данных в table2.

    Таким образом, использование оператора JOIN и переменных позволяет обновлять или вставлять данные в несколько таблиц одним запросом в MySQL.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно