Sql запрос как удалить из строк нужную сумму

12
seosniks
На сайте с 13.08.2007
Offline
389
#11
Ilya74 #:

У вас структура БД для такой задачи ужасная. Никто так не делает. Делайте как вам выше советовали одну таблицу с балансом пользователей, а другую таблицу с транзакциями. В первую записываете итоговый баланс пользователя после манипуляций, а во вторую прибавления и вычитания по пользователю. Сами транзакции делаете на PHP, либо через процедуры и функции MySQL (но так в разы сложнее).

У меня в базе много таблиц,  просто у меня бот в этой таблице  должен забирать  произвольные суммы и перемещать в историю сделок. а эти 

данные убирать из базы совсем.  

Можно даже сразу удалять     в место UPDATE    если  `summ` ='0

Просто думал сделать как то проще.

А проще не получается.

jpg 2022-01-26_133230.jpg
jpg 2022-01-26_133255.jpg
seosniks
На сайте с 13.08.2007
Offline
389
#12
LEOnidUKG #:

Главное в самом запросе UPDATE миносовать данные, а не тупо делать UPDATE на новые, иначе если в этот момент у кого-то будет пополнение то оно слетит из-за вашей обработке. В масштабных проектах так не делается. Это беда.

Делаются транзакции и лог всех действий (+/-), и уже потом по ним баланс подбивается. 

Ну  это  само собой, иначе будет  просто обнуление значения.   Нам  надо   обнулить все которые  будут меньше общей суммы 100.

требуемая к удалению  сумма,    к примеру 100

UPDATE `criptobot`.`birbot` SET `volcoin` = '0' WHERE `birbot`.`volcoin` =10;

UPDATE `criptobot`.`birbot` SET `volcoin` = '0' WHERE `birbot`.`volcoin` =80;

UPDATE `criptobot`.`birbot` SET `volcoin` = '40' WHERE `birbot`.`volcoin` =50;

Мы сделали 100.  Последний  отнимает не достающую сумму а остаток возвращает в базу.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий