wiki:Transaction2

Version 1 (modified by 211101, 28 hours ago) ( diff )

--

Атомично креирање на финансиска трансакција со повеќе помошни финансиски трансакции

Корисникот креира сложена трансакција со следните карактеристики:

  • Име на трансакција: "Ручек со колеги"
  • Вкупен износ: 2500 МКД
  • Датум: тековен датум
  • Таг: Food
  • Плаќање: 2500 МКД платени од Cash
  • Поврат: 1000 МКД добиени назад на Bank Account

Оваа операција мора да:

  • креира еден запис во transaction
  • креира два записи во transaction_breakdown доколку не се фрли исклучок за лимитот
  • ажурира баланси на двете сметки
  • пресмета точен net_amount
  • додели таг на трансакцијата

BEGIN;

-- Се активира тригерот `trg_set_transaction_date`

INSERT INTO transaction (
    transaction_name,
    amount,
    net_amount,
    date
)
VALUES (
    'Ручек со колеги',
    2500,
    0,
    NOW()
);

-- Се активира тригерот `trg_cash_account_limit`

INSERT INTO transaction_breakdown (
    transaction_id,
    transaction_account_id,
    spent_amount,
    earned_amount
)
VALUES (
    currval('transaction_transaction_id_seq'),
    1,
    2500,
    0
);

-- Се активира тригерот `trg_update_transaction_account_balance`

-- Се активира тригерот `trg_update_transaction_net_amount`

-- Се активира тригерот `trg_debit_account_limit`

INSERT INTO transaction_breakdown (
    transaction_id,
    transaction_account_id,
    spent_amount,
    earned_amount
)
VALUES (
    currval('transaction_transaction_id_seq'),
    2,
    0,
    1000
);

-- Се активира тригерот `trg_update_transaction_account_balance`

-- Се активира тригерот `trg_update_transaction_net_amount`

INSERT INTO tag_assigned_to_transaction (
    transaction_id,
    tag_id
)
VALUES (
    currval('transaction_transaction_id_seq'),
    1
);

COMMIT;
Note: See TracWiki for help on using the wiki.