== Тригери Тригери се објекти како придружни табели, кои автоматски се активираат кога ке се случи нешто во врска со таа табела за која се врзани тригерите. Креирање на тригери се дефинира со '''{{{CREATE TRIGGER}}}'''.\\ Тригери се активираат при извршување на наредбите '''{{{INSERT}}}''','''{{{UPDATE}}}''' и '''{{{DELETE}}}'''.\\ Време на извршување на тригери е '''{{{BEFORE}}}''' и '''{{{AFTER}}}'''. \\ Според самата функција може да видиме кога се извршува тригерот '''{{{BEFORE}}}''', \\ што значи овој тригер ке се активира пред секој нов запис во табела. \\ Во тригерот '''{{{INSERT}}}''', може да се користи само {{{NEW.Ime_Na_Pole}}}. \\ Во тригерот '''{{{UPDATE}}}''', може да се користи само {{{OLD.Ime_Na_Pole}}}. \\ При манипулација со комплексни тригери користиме функции како {{{BEGIN}}} и {{{END}}}, \\ додека при бришење користиме {{{DROP}}} и при прикажување користиме {{{SHOW}}}.\\ Исто така, да напоменеме дека тие може да се активираат \\ по редови '''{{{FOR EACH ROW}}}''' и по операции '''{{{FOR EACH STATEMENT}}}'''.\\ \\ = Тригер за автоматско пресметување на {{{total_price}}} при внес во {{{contains}}} или при update Овој тригер автоматски ја ажурира {{{total_price}}} во {{{orders}}} секој пат кога ќе се додаде, \\ смени или избрише некој елемент во {{{contains}}}. \\ Целта е да се осигураме дека {{{orders.total_price}}} е точен збир од сите {{{quantity}}} * {{{price}}} вредности \\ во {{{contains}}} за таа нарачка. \\ Првин се креира функција : {{{#!sql CREATE OR REPLACE FUNCTION update_order_total_price() RETURNS TRIGGER AS $$ DECLARE order_id INTEGER; BEGIN IF TG_OP = 'DELETE' THEN order_id := OLD.id_order; ELSE order_id := NEW.id_order; END IF; UPDATE orders SET total_price = ( SELECT COALESCE(SUM(quantity * price), 0) FROM contains WHERE id_order = order_id ) WHERE id_order = order_id; RETURN NULL; END; $$ LANGUAGE plpgsql; \\ Потоа се креира тригерот што ја повикува таа функција: {{{#!sql CREATE TRIGGER trg_update_total_price AFTER INSERT OR UPDATE OR DELETE ON contains FOR EACH ROW EXECUTE FUNCTION update_order_total_price(); }}} \\