wiki:Transaction1

Version 1 (modified by 211101, 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.