Changes between Version 1 and Version 2 of Triggers
- Timestamp:
- 08/31/25 23:27:45 (43 hours ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Triggers
v1 v2 6 6 \\ 7 7 **Што прави:** Автоматски поставува last_changed на денешен датум и спречува quantity < 0.\\ 8 **Кога се активира:** Пред INSERT и пред UPDATE.\\8 **Кога се активира:** Пред INSERT или UPDATE на табелата inventory_brandedmedicine.\\ 9 9 **Зошто е корисен:** Осигурува конзистентност на залихата и забрана за нелогични вредности.\\ 10 10 … … 40 40 \\ 41 41 **Што прави:** Додава поени на clubcard ако payment.status = 'завршено'. \\ 42 **Кога се активира:** По INSERT или UPDATE . \\42 **Кога се активира:** По INSERT или UPDATE на табелата payment. \\ 43 43 **Зошто е корисен:** Автоматска интеграција на лојалност со финансиски трансакции. \\ 44 44 … … 74 74 \\ 75 75 **Што прави:** Ако verification_status = 'верифицирано', тогаш client.is_verified = TRUE; ако е 'одбиено' → FALSE. \\ 76 **Кога се активира:** По INSERT или UPDATE . \\76 **Кога се активира:** По INSERT или UPDATE на табелата sensitiveclientdata. \\ 77 77 **Зошто е корисен:** Автоматски ја усогласува регулаторната состојба на клиентот со flag-от во Client. \\ 78 78 … … 104 104 \\ 105 105 **Што прави:** Спречува интеракција лек-со-себе, и редоследува пар (id1, id2) така што id1 < id2. \\ 106 **Кога се активира:** Пред INSERT и UPDATE. \\106 **Кога се активира:** Пред INSERT или UPDATE на табелата medicineinteraction. \\ 107 107 **Зошто е корисен:** Гарантира уникатни и чисти парови лекови. \\ 108 108 … … 146 146 \\ 147 147 **Што прави:** Кога се менува inventory_brandedmedicine, автоматски додава записи во pharmacy_catalog за да гарантира дека секој производ што е во залиха е и во каталогот на аптеката. \\ 148 **Кога се активира:** По INSERT или UPDATE на quantity. \\148 **Кога се активира:** По INSERT или UPDATE на табелата inventory_brandedmedicine. \\ 149 149 **Зошто е корисен:** Ја одржува усогласеноста меѓу залихи и каталог, без рачна интервенција. \\ 150 150 … … 185 185 186 186 }}} 187 188 ---- 189 190 == **6) Тригер за блокирање на клиент со повеќе неуспешни плаќања** \\ 191 \\ 192 **Што прави:** Кога клиент има 3 или повеќе неуспешни плаќања во последните 10 дена, автоматски го поставува is_verified = FALSE во табелата Client. \\ 193 **Кога се активира:** По INSERT или UPDATE на табелата payment кога статусот е „неуспешно“. \\ 194 **Зошто е корисен:** Спречува понатамошни обиди за нарачки и злоупотреба од клиенти со повеќекратни неуспешни трансакции, со што ја зголемува безбедноста и стабилноста на системот. \\ 195 196 {{{ 197 198 CREATE OR REPLACE FUNCTION synergymed.fn_block_client_after_failed_payment() 199 RETURNS TRIGGER 200 LANGUAGE plpgsql 201 AS $$ 202 DECLARE 203 v_failures INT; 204 BEGIN 205 SELECT COUNT(*) INTO v_failures 206 FROM synergymed.payment p 207 WHERE p.client_id = NEW.client_id 208 AND p.status = 'неуспешно' 209 AND p.payment_date >= (CURRENT_DATE - INTERVAL '10 days'); 210 211 IF v_failures >= 3 THEN 212 UPDATE synergymed.client 213 SET is_verified = FALSE 214 WHERE user_id = NEW.client_id; 215 END IF; 216 217 RETURN NEW; 218 END; 219 $$; 220 221 DROP TRIGGER IF EXISTS trg_block_client_after_failed_payment ON synergymed.payment; 222 223 CREATE TRIGGER trg_block_client_after_failed_payment 224 AFTER INSERT OR UPDATE OF status ON synergymed.payment 225 FOR EACH ROW 226 WHEN (NEW.status = 'неуспешно') 227 EXECUTE FUNCTION synergymed.fn_block_client_after_failed_payment(); 228 229 }}}