Триггер базы данных Как вставить сумму значений из одной таблицы в другую? - PullRequest
0 голосов
/ 29 марта 2019

Я думаю, что лучший способ это триггеры?Любая идея?

Я должен вставить сумму payment_amount отдельно для каждого имени пользователя из таблицы Платежи , total_money Таблица total_balance Этоследует вставлять автоматически каждый раз, когда в таблицу добавляются новые значения Платежи

Например: Пользователь "Джон" заполнил свой счет 2 раза 100$ 50 $, всего на его счету 150 $

Пример в таблицах:

Таблица: Платежи

 ID      username     payment_amount    Status  
+-------+-------------+-------------+-----------+
|   1   |  John       |     100     | Complete  |
+-------+-------------+-------------+-----------+
|   2   |  John       |     50      | Complete  |
+-------+-------------+-------------+-----------+
|   3   |  Alex       |     100     | Complete  |
+-------+-------------+-------------+-----------+

Таблица: total_balance

 ID      username      total_money      
+-------+-------------+-------------+
|   1   |  John       |     150     | 
+-------+-------------+-------------+
|   2   |  Alex       |     100     |
+-------+-------------+-------------+

1 Ответ

1 голос
/ 29 марта 2019

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

DROP TABLE total_balance;

CREATE VIEW total_balance
AS
SELECT p.username,
       sum(p.payment_amount) total_money
       FROM payments p
       GROUP BY p.username;

Или, если вы хотите только суммировать выполненные платежи:

DROP TABLE total_balance;

CREATE VIEW total_balance
AS
SELECT p.username,
       sum(p.payment_amount) total_money
       FROM payments p
       WHERE p.status = 'Complete'
       GROUP BY p.username;

Цифры в представлении всегда будут точными и отражают текущую ситуацию.

...