= Фаза 4: Функции, процедури, тригери = Апликациската логика е имплементирана на ниво на база на податоци со користење на PL/pgSQL функции, процедури и тригери. Во продолжение се издвоени најважните функционалности имплементирани преку процедури и тригери: == 1. Ослободување на откажани билети (Тригер функција) == * '''Назив:''' `trg_fn_release_cancelled_tickets()` * '''Опис:''' Тригер кој се активира автоматски по бришење или откажување на резервација, враќајќи ги билетите повторно во системот како слободни и ажурирајќи го вкупниот број на достапни места. {{{ CREATE OR REPLACE FUNCTION trg_fn_release_cancelled_tickets() RETURNS TRIGGER AS $$ BEGIN -- Враќање на билетите во системот UPDATE events SET available_seats = available_seats + OLD.ticket_count WHERE event_id = OLD.event_id; RETURN OLD; END; $$ LANGUAGE plpgsql; CREATE TRIGGER trg_release_tickets AFTER DELETE ON reservations FOR EACH ROW EXECUTE FUNCTION trg_fn_release_cancelled_tickets(); }}} == 2. Процес на купување билет (Процедура) == * '''Назив:''' `sp_buy_ticket(int4, int4)` * '''Опис:''' Процедура која ја менаџира трансакцијата за купување билет. Проверува достапност, креира резервација и го поврзува корисникот со генерираниот билет. * '''Пример за повик:''' `CALL public.sp_buy_ticket(1, 105);` == 3. Проверка на достапност (Функција) == * '''Назив:''' `fn_check_availability(int4)` * '''Опис:''' Функција која за даден ID на настан или сектор брзо проверува и го враќа преостанатиот број на слободни места, спречувајќи "overbooking".