| Version 1 (modified by , 33 hours ago) ( diff ) |
|---|
Автоматско бришење на трансакции без помошни(breakdown) записи
Опис
Овој тригер автоматски ја брише трансакцијата доколку по бришење на запис од transaction_breakdown повеќе не постојат поврзани breakdown записи за таа трансакција
Со ова се обезбедува дека не постојат „празни“ трансакции кои немаат финансиско значење
Табели опфатени со тригерот
transactiontransaction_breakdown
Тип на тригер
- AFTER DELETE
Активиран над табелата transaction_breakdown
SQL код
CREATE OR REPLACE FUNCTION delete_empty_transaction()
RETURNS TRIGGER
LANGUAGE plpgsql
AS $$
BEGIN
-- Проверка дали постојат други breakdown записи за истата трансакција
IF NOT EXISTS (
SELECT 1
FROM transaction_breakdown
WHERE transaction_id = OLD.transaction_id
) THEN
DELETE FROM transaction
WHERE transaction_id = OLD.transaction_id;
END IF;
RETURN NULL;
END;
$$;
CREATE TRIGGER trg_delete_empty_transaction
AFTER DELETE
ON transaction_breakdown
FOR EACH ROW
EXECUTE FUNCTION delete_empty_transaction();
Објаснување на логиката
По бришење на breakdown запис:
- се проверува дали трансакцијата има други поврзани записи
Доколку нема:
- трансакцијата се смета за невалидна
- автоматски се брише
Ова однесување ја моделира композицијата помеѓу transaction и transaction_breakdown
Причина за користење
Овој тригер е важен затоа што:
- трансакција без breakdown нема значење
- спречува акумулација на некорисни податоци
- ја одржува базата чиста и логична
Оваа логика не може секогаш безбедно да се остави на апликацијата
Note:
See TracWiki
for help on using the wiki.
