wiki:Trigger5

Автоматско бришење на трансакции без помошни(breakdown) записи

Опис

Овој тригер автоматски ја брише трансакцијата доколку по бришење на запис од transaction_breakdown повеќе не постојат поврзани breakdown записи за таа трансакција

Со ова се обезбедува дека не постојат „празни“ трансакции кои немаат финансиско значење

Табели опфатени со тригерот

  • transaction
  • transaction_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 нема значење
  • спречува акумулација на некорисни податоци
  • ја одржува базата чиста и логична

Оваа логика не може секогаш безбедно да се остави на апликацијата

Last modified 33 hours ago Last modified on 01/04/26 02:38:53
Note: See TracWiki for help on using the wiki.