Создать триггер рассчитать итого = количество * цена из другой таблицы - PullRequest
1 голос
/ 30 марта 2020

У меня есть две таблицы: PRODUCT_tbl и TRANSACTION_tbl

PRODUCT_tbl
╔══════╦═══════════════╦════════════════╗
║ ID   ║ NAME          ║ PRICE          ║
╠══════╬═══════════════╬════════════════╣
║ 53   ║ TEA           ║ 1000           ║ 
║ 29   ║ MILK          ║ 3000           ║ 

TRANSACTION_tbl
╔══════╦═══════════════╦════════════════╦════════════════╗
║ ID   ║ PRODUCT_ID    ║ QUANTITY       ║ TOTAL          ║
╠══════╬═══════════════╬════════════════╬════════════════╣

Как создать триггер, который может умножать QUANTITY на основе PRICE из PRODUCT_tbl таблицы после вставки на TRANSACTION_tbl
Пример:
INSERT INTO TRANSACTION_tbl (PRODUCT_ID, QUANTITY) VALUES (53,5)

╔══════╦═══════════════╦════════════════╦════════════════╗
║ ID   ║ PRODUCT_ID    ║ QUANTITY       ║ TOTAL          ║
╠══════╬═══════════════╬════════════════╬════════════════╣
║ 1    ║ 53            ║ 5              ║ 5000           ║

1 Ответ

2 голосов
/ 30 марта 2020

В общем, я бы рекомендовал не хранить производную информацию, ie данные, которые могут быть вычислены из других доступных значений.

Например, вы можете использовать для этого представление:

create view v_ transaction as 
select t.id, t.product_id, t.quantity, p.price * t.quantity total
from transaction t
inner join product p on p.id = t.product_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...