Changes between Initial Version and Version 1 of Trigger5


Ignore:
Timestamp:
01/04/26 02:38:53 (3 days ago)
Author:
211101
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Trigger5

    v1 v1  
     1= Автоматско бришење на трансакции без помошни(breakdown) записи
     2
     3==== Опис
     4Овој тригер автоматски ја брише трансакцијата доколку по бришење на запис од `transaction_breakdown` повеќе не постојат поврзани `breakdown` записи за таа трансакција
     5
     6Со ова се обезбедува дека не постојат „празни“ трансакции кои немаат финансиско значење
     7
     8==== Табели опфатени со тригерот
     9- `transaction`
     10- `transaction_breakdown`
     11
     12==== Тип на тригер
     13- **AFTER DELETE
     14Активиран над табелата `transaction_breakdown`
     15
     16==== SQL код
     17{{{#!sql
     18CREATE OR REPLACE FUNCTION delete_empty_transaction()
     19RETURNS TRIGGER
     20LANGUAGE plpgsql
     21AS $$
     22BEGIN
     23    -- Проверка дали постојат други breakdown записи за истата трансакција
     24    IF NOT EXISTS (
     25        SELECT 1
     26        FROM transaction_breakdown
     27        WHERE transaction_id = OLD.transaction_id
     28    ) THEN
     29        DELETE FROM transaction
     30        WHERE transaction_id = OLD.transaction_id;
     31    END IF;
     32
     33    RETURN NULL;
     34END;
     35$$;
     36
     37
     38CREATE TRIGGER trg_delete_empty_transaction
     39AFTER DELETE
     40ON transaction_breakdown
     41FOR EACH ROW
     42EXECUTE FUNCTION delete_empty_transaction();
     43}}}
     44
     45==== Објаснување на логиката
     46По бришење на breakdown запис:
     47- се проверува дали трансакцијата има други поврзани записи
     48Доколку нема:
     49    - трансакцијата се смета за невалидна
     50    - автоматски се брише
     51Ова однесување ја моделира композицијата помеѓу `transaction` и `transaction_breakdown`
     52
     53==== Причина за користење
     54
     55Овој тригер е важен затоа што:
     56- трансакција без breakdown нема значење
     57- спречува акумулација на некорисни податоци
     58- ја одржува базата чиста и логична
     59Оваа логика не може секогаш безбедно да се остави на апликацијата