= Фаза 4: Функции, процедури, тригери = Апликациската логика е имплементирана на ниво на база на податоци со користење на PL/pgSQL функции, процедури и тригери. Во продолжение се издвоени најважните функционалности имплементирани преку процедури и тригери: == 1. Ослободување на откажани билети (Тригер функција) == * '''Назив:''' `trg_fn_release_cancelled_tickets()` * '''Опис:''' Тригер кој се активира автоматски по бришење или откажување на резервација, враќајќи ги билетите повторно во системот како слободни и ажурирајќи го вкупниот број на достапни места. CREATE OR REPLACE FUNCTION public.trg_fn_release_cancelled_tickets() RETURNS trigger LANGUAGE plpgsql AS $function$ BEGIN IF NEW.status = 'cancelled' AND OLD.status != 'cancelled' THEN UPDATE ticket SET status = 'available', user_id = NULL WHERE ticket_id = NEW.ticket_id; END IF; RETURN NEW; END; $function$ ; == 2. Процес на купување билет (Процедура) == * '''Назив:''' `sp_buy_ticket(int4, int4)` * '''Опис:''' Процедура која ја менаџира трансакцијата за купување билет. Проверува достапност, креира резервација и го поврзува корисникот со генерираниот билет. * '''Пример за повик:''' `CALL public.sp_buy_ticket(1, 105);` == 3. Проверка на достапност (Функција) == * '''Назив:''' `fn_check_availability(int4)` * '''Опис:''' Функција која за даден ID на настан или сектор брзо проверува и го враќа преостанатиот број на слободни места, спречувајќи "overbooking".