Changes between Version 65 and Version 66 of AdvancedApplicationDevelopment


Ignore:
Timestamp:
08/31/24 02:17:57 (3 months ago)
Author:
184006
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedApplicationDevelopment

    v65 v66  
    6161}}}
    6262=== Тригери
     63\\ Со употреба на тригер го форматирам мобилниот телефоснки број. Најпрво ја променив големината на полето бидејќи првично имавме назначено phoneNumber  varchar(15), што е мала голема за телефонски број. При внес на телефоснки број во полето Vet Centers телефонскиот број автоматски се формитира со тоа што: доколку не започнува со +389 му се додава, доколку започнува со 0 се брише првата нула, и се бришат сите знаци освен знакот +.
     64{{{
     65ALTER TABLE vet_centers
     66ALTER COLUMN phoneNumber TYPE varchar(50);
     67
     68CREATE OR REPLACE FUNCTION format_phone_number()
     69RETURNS TRIGGER AS $$
     70BEGIN
     71    -- Отстранување на сите не-нумерички знаци освен плусот на почетокот, ако постои
     72    IF LEFT(NEW.phoneNumber, 1) = '+' THEN
     73        NEW.phoneNumber := '+' || regexp_replace(SUBSTRING(NEW.phoneNumber FROM 2), '\D', '', 'g');
     74    ELSE
     75        NEW.phoneNumber := regexp_replace(NEW.phoneNumber, '\D', '', 'g');
     76    END IF;
     77
     78    -- Ако бројот веќе започнува со '+389', не правиме промени
     79    IF LEFT(NEW.phoneNumber, 4) = '+389' THEN
     80        RETURN NEW;
     81    END IF;
     82
     83    -- Ако бројот започнува со '389' и нема '+', додај само '+'
     84    IF LEFT(NEW.phoneNumber, 3) = '389' THEN
     85        NEW.phoneNumber := '+389' || SUBSTRING(NEW.phoneNumber FROM 4);
     86    ELSE
     87        -- Ако бројот не започнува со '389', додадете целосен префикс '+389'
     88        NEW.phoneNumber := '+389' || NEW.phoneNumber;
     89    END IF;
     90
     91    -- Осигурување дека нема водечка '0' после '+389'
     92    IF LEFT(NEW.phoneNumber, 4) = '+389' AND SUBSTRING(NEW.phoneNumber FROM 5 FOR 1) = '0' THEN
     93        NEW.phoneNumber := '+389' || SUBSTRING(NEW.phoneNumber FROM 6);
     94    END IF;
     95
     96    RETURN NEW;
     97END;
     98$$ LANGUAGE plpgsql;
     99
     100
     101
     102
     103
     104
     105CREATE TRIGGER trigger_format_phone_number
     106BEFORE INSERT OR UPDATE ON vet_centers
     107FOR EACH ROW
     108EXECUTE FUNCTION format_phone_number();
     109}}}
    63110\\Тригер кој што го искористив за да го пополнам полето date_askes во Blog Post Consultation со моменталниот датум.
    64111{{{