Changes between Version 1 and Version 2 of DatabaseProgramming


Ignore:
Timestamp:
06/13/26 18:39:01 (6 days ago)
Author:
231069
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DatabaseProgramming

    v1 v2  
    276276[[BR]]
    277277== 3. Дополнителна функција: azuriraj_kazna_plakanja ==
    278 Функција што ги обработува задоцнетите уплати наеднаш: на неплатените постари од 2 недели им го зголемува износот за 50%, а тие постари од 2 месеци ги префрла во статус `Sudska_postapka`. Враќа колку уплати вкупно се променети.
     278Функција што ги обработува задоцнетите неплатени казни: на неплатените постари од '''8 дена''' им го зголемува износот за 50% (само ако сè уште не се зголемени), а на тие постари од '''2 месеци''' им го менува статусот во `Sudska_postapka`. Враќа порака дека постапката е успешно извршена.
    279279
    280280Прво ја прошируваме табелата `Uplata` со новиот статус и со колона за обележување дали казната е веќе зголемена:
     
    289289{{{#!sql
    290290CREATE OR REPLACE FUNCTION azuriraj_kazna_plakanja()
    291     RETURNS int
    292     LANGUAGE plpgsql
    293 AS $$
    294 DECLARE
    295     v_zgolemeni int := 0;
    296     v_na_sud    int := 0;
     291    RETURNS text
     292    LANGUAGE plpgsql
     293AS $$
    297294BEGIN
    298295    UPDATE Uplata u
     
    303300      AND u.status = 'Neplateno'
    304301      AND u.kazna_zgolemena = false
    305       AND z.datum < CURRENT_DATE - INTERVAL '2 weeks';
    306     GET DIAGNOSTICS v_zgolemeni = ROW_COUNT;
     302      AND z.datum < CURRENT_DATE - INTERVAL '8 days';
    307303
    308304    UPDATE Uplata u
     
    312308      AND u.status = 'Neplateno'
    313309      AND z.datum < CURRENT_DATE - INTERVAL '2 months';
    314     GET DIAGNOSTICS v_na_sud = ROW_COUNT;
    315 
    316     RAISE NOTICE 'Zgolemena kazna za % uplati, prefrleni % na sudska postapka.', v_zgolemeni, v_na_sud;
    317     RETURN v_zgolemeni + v_na_sud;
     310
     311    RETURN 'Постапката за автоматско ажурирање на неплатените казни е успешно извршена.';
    318312END;
    319313$$;
     
    325319SELECT status, COUNT(*) FROM Uplata GROUP BY status;
    326320}}}
     321
     322Оваа функција е наменета да се извршува автоматски како '''закажана (scheduled)''' задача што периодично ги обработува задоцнетите неплатени казни — ги зголемува застарените и најстарите ги префрла во судска постапка без рачна интервенција.