mysql - обновить две записи одновременно

0

Используя PHP msqli, можно ли обновить две записи одним запросом?

Сначала я делаю SELECT, чтобы проверить, что $pay_user имеет достаточную валюту игры в его учетной записи, если он делает то я делаю следующее...

Мой запрос на обновление:

"UPDATE account SET money = money -". $money. "WHERE User_id =". $pay_user

"UPDATE account SET money = money +". $money. "WHERE User_id =". $recieve_user

Это транзакция, чтобы остановить грязное чтение.

Я надеялся сохранить запрос и назвать его одним... возможно ли это?

  • 0
    В дополнение к ответу на транзакцию ниже, если ваш столбец user_id проиндексирован, дополнительный запрос вряд ли будет заметен.
  • 0
    Не беспокойтесь о том, как отчаянно уменьшаете количество запросов; Вы ничего не улучшите.
Теги:
mysqli

3 ответа

3

Поскольку два предложения where не совпадают, вы не можете объединить эти запросы в один оператор.

Вы можете пометить его как TRANSACTION, чтобы оба они выполнялись одновременно.

2

обратитесь к http://dev.mysql.com/doc/refman/5.0/en/update.html

пример кода

update account a1, account a2 
set a1.money = a1.money - $money , a2.money = a2.money + $money
where a1.user_id = $pay_user and a2.user_id = $recv_user
  • 0
    Очень аккуратный трюк. Хотя в интересах KISS я бы, наверное, этим не воспользовался.
1

Я рекомендую использовать хранимую процедуру для этого. это будет один вызов из php, и если он терпит неудачу в середине, SP должен выполнить откат.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню