UPDATE двух таблиц одной командой

Тема в разделе "Базы данных", создана пользователем Pashka Korchagin, 17 мар 2019 в 14:58.

Модераторы: latteo
  1. Pashka Korchagin

    Pashka Korchagin Постоялец

    Регистр.:
    23 дек 2009
    Сообщения:
    114
    Симпатии:
    7
    Камрады, кто разбирается, помогите решить вопрос с SQL-запросом.

    Имеем:

    Код:
    UPDATE `table1` SET `modified` = '2018-09-03 08:00:00' + interval rand()*190 day + interval rand()*36000 second
    UPDATE `table1` SET `created` = '2018-09-03 08:00:00' + interval rand()*190 day + interval rand()*36000 second
    UPDATE `table2` SET `modified` = '2018-09-03 08:00:00' + interval rand()*190 day + interval rand()*36000 second
    UPDATE `table2` SET `created` = '2018-09-03 08:00:00' + interval rand()*190 day + interval rand()*36000 second
    
    Как объединить в один запрос, если возможно.

    Цель: Синхронно изменить дату публикации и дату редактирования в двух таблицах.
     
  2. petero

    petero Создатель

    Регистр.:
    3 июл 2013
    Сообщения:
    21
    Симпатии:
    11
    Например так
    Код:
    UPDATE
    table1,table2
    SET
    table1.modified = '2018-09-03 08:00:00' + interval rand()*190 day + interval rand()*36000 second,
    table1.created = '2018-09-03 08:00:00' + interval rand()*190 day + interval rand()*36000 second,
    table2.modified = '2018-09-03 08:00:00' + interval rand()*190 day + interval rand()*36000 second,
    table2.created = '2018-09-03 08:00:00' + interval rand()*190 day + interval rand()*36000 second;
    
     
  3. Black Hat

    Black Hat

    Регистр.:
    15 май 2015
    Сообщения:
    166
    Симпатии:
    110
    Можно через транзакцию:
    Код:
    START TRANSACTION;
    -- куча одиночных запросов
    COMMIT;
    
    Транзакции работают не на всех база данных и не всех типах хранилища. В MySQL хранилище Innodb работать будет