[MYSQL] Один запрос на несколько таблиц

Сообщения
673
Реакции
242
Помог
11 раз(а)
Добрый вечер

Каким образом можно сделать один запрос на несколько таблиц с Командой UPDATE?


чекал мануал тут
пробовал;
SQL:
UPDATE `csstats` INNER JOIN `csstats_maps` ON `csstats`.`id` = `csstats_maps`.`player_id`
SET `csstats`.`deaths` = '228', `csstats_maps`.`dmg` = '228'
where `csstats`.`steamid` = 'STEAM_1:0:1345817601'
ошибка: /* Ошибка SQL (1442): Can't update table 'csstats_maps' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. */


также пробовал
SQL:
UPDATE `csstats` ,`csstats_maps`
SET `csstats`.`deaths` = '228', `csstats_maps`.`dmg` = '228'
where `csstats`.`steamid` = 'STEAM_1:0:1345817601' and `csstats`.`id` = `csstats_maps`.`player_id`
ошибка: /* Ошибка SQL (1442): Can't update table 'csstats_maps' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. */



есть варианты?
 
Сообщения
1,576
Реакции
658
Помог
5 раз(а)
Процедуры есть, в них можно делать вообще что угодно!

А еще можно вообще в несколько строк отправлять запрос. (несколько штук подряд)

Столько много разных возможностей, а ими пользуются никто)
 

RockTheStreet

Саппорт года
Сообщения
1,743
Реакции
344
Помог
40 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Один запрос может изменять только одну таблицу.
 
Сообщения
42
Реакции
32
Попробуй так:

SQL:
UPDATE `csstats`
SET `deaths`='228'
WHERE `steamid`='STEAM_1:0:1345817601';
UPDATE `csstats_maps`
SET `dmg`='228'
WHERE `steamid`='STEAM_1:0:1345817601';
 
Сообщения
391
Реакции
106
Помог
2 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
szawesome, Это же два независимых запроса
 
Сообщения
42
Реакции
32
stalin_alex, это называется множественный запрос, его можно запустить как один
 

RockTheStreet

Саппорт года
Сообщения
1,743
Реакции
344
Помог
40 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Сообщения
1,576
Реакции
658
Помог
5 раз(а)
RockTheStreet, ну тогда процедура, создаётся процедура, и потом выполняется когда надо, это кстати ооооочень сильно оптимизирует трафик, если нужно часто и много данных отправлять.
В моем плагине, который наверное не работает, можете глянуть как процедуры создавать и выполнять
 

RockTheStreet

Саппорт года
Сообщения
1,743
Реакции
344
Помог
40 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
karaulov, Так никто и не отрицает. Если тот или иной запрос используется несколько раз, и в разных частях кода, то целесообразнее вывести его заранее и использовать уже готовое(в переменную, например). Но это при условии, если запрос не будет видоизменяться от ситуации.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу