Mysql Транзакции и балансы - PullRequest
0 голосов
/ 24 октября 2018

Итак, у меня есть эта таблица в MySQL с информацией о пользователе:

[             USERS           ]
[id | name |  email  | balance]
[ 1 | A    | a@e.com |    0   ]
[ 2 | B    | b@e.com |    0   ]
[ 3 | C    | c@e.com |    0   ]

и таблица с транзакциями

[           TRANSACTIONS         ]
[id | user_id | product |  amount  | price ]
[ 1 |       3 |TV 600   |       1  | 279,22]
[ 2 |       2 |Radio G  |       1  |  32,12]

Что мне нужно, если я добавлю строку в таблицу transactions, что balance пользователя также обновляется.Как лучше всего это делать, чтобы на 100% быть уверенным, что баланс всегда правильный?

Хранимая процедура с блокировкой или триггерами или чем-то еще?

1 Ответ

0 голосов
/ 24 октября 2018

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

create view MyCalculatedView as
select u.id, u.name, u.email, t.balance from USERS u
left join (
    select user_id, sum(price) as balance
    from TRANSACTIONS
    group by user_id
) t on u.id = t.user_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...