| Version 1 (modified by , 33 hours ago) ( diff ) |
|---|
Атомично креирање на финансиска трансакција
Корисникот креира нова финансиска трансакција со следните податоци:
- Име на финансиска трансакција: „Пазарување во маркет“
- Датум: тековен датум
- Трансакциска сметка: Cash Account (id = 1)
- Потрошен износ: 3000 МКД
- Заработен износ: 0 МКД
Оваа акција мора да резултира со:
- нов запис во табелата
transactionсо автоматско поставен тековен датум - нов запис во
transaction_breakdownдоколку проверката за лимит не фрли исклучок - автоматско ажурирање на балансот на трансакциската сметка
- точна пресметка на
net_amount
Доколку било кој чекор не успее, ниеден податок не смее да остане запишан во базата.
Се прави автоматски ROLLBACK ако настане грешка
BEGIN;
-- Се активира тригерот `trg_set_transaction_date`
INSERT INTO transaction (
transaction_name,
amount
)
VALUES (
'Пазарување во маркет',
3000
);
-- Се активира тригерот `trg_cash_account_limit`
INSERT INTO transaction_breakdown (
transaction_id,
transaction_account_id,
spent_amount,
earned_amount
)
VALUES (
currval('transaction_transaction_id_seq'),
1,
3000,
0
);
-- Се активира тригерот `trg_update_transaction_account_balance`
-- Се активира тригерот `trg_update_transaction_net_amount`
COMMIT;
-- ROLLBACK ако настане грешка
Note:
See TracWiki
for help on using the wiki.
