Страницы

Поиск по вопросам

среда, 19 июня 2019 г.

MySQL: обновление счета, при попытке вставки уже существующего игрока

Есть запрос:
INSERT INTO `DonateCoins` (`player`, `donateCoins`) VALUES ('test', '20202')
Как сделать, чтобы при выполнении данного запроса, если такой player присутствует в таблице, то к его количеству коинов добавлялось 20202?
В самой таблице есть player - test и donateCoins - 0


Ответ

Можно поступить следующим образом: индексируем столбец player уникальным индексом
ALTER TABLE DonateCoins ADD UNIQUE KEY player (player);
Это не позволит вставлять в таблицу DonateCoins дублирующие записи. Вставку новых данных осуществляем INSERT-запросом с ON DUPLICATE KEY UPDATE, в которой прописываем логику обновления поля при обнаружении вставки записи с уже существующим игроком.
INSERT INTO DonateCoins (`player`, `donateCoins`) VALUES ('test', '20202') ON DUPLICATE KEY UPDATE donateCoins = donateCoins + VALUES(donateCoins);
В результате, если запись уже существует, donateCoins будет увеличиваться на 20202 (тип столбца должен быть числовым, а не текстовым).

Комментариев нет:

Отправить комментарий