= Автоматско бришење на трансакции без помошни(breakdown) записи ==== Опис Овој тригер автоматски ја брише трансакцијата доколку по бришење на запис од `transaction_breakdown` повеќе не постојат поврзани `breakdown` записи за таа трансакција Со ова се обезбедува дека не постојат „празни“ трансакции кои немаат финансиско значење ==== Табели опфатени со тригерот - `transaction` - `transaction_breakdown` ==== Тип на тригер - **AFTER DELETE Активиран над табелата `transaction_breakdown` ==== SQL код {{{#!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 нема значење - спречува акумулација на некорисни податоци - ја одржува базата чиста и логична Оваа логика не може секогаш безбедно да се остави на апликацијата