PLProjektKompetencyjny / PK_6IO1z_Projekt4_DataBase

0 stars 0 forks source link

Utworzenie złożonej walidacji wprowadzanych danych #15

Open StanislawHornaGitHub opened 6 months ago

StanislawHornaGitHub commented 6 months ago

W przypadku bardziej złożonych struktur jak numer nip, który posiada wewnętrzną sumę kontrolną można napisać funkcję w bazie danych, która będzie wywoływana w CONSTRAINT ... CHECK w celu zweryfikowania czy numer nip jest poprawny

PRZYKŁAD funkcja sprawdza w języku Python czy numer nip kończy się cyfrą 2, jeśli tak to pozwala na wprowadzenie danych, jeśli nie, to baza danych zwraca błąd

CREATE FUNCTION check_nip_number(nip varchar)
    RETURNS bool
    LANGUAGE 'plpython3u'
AS $BODY$
    if nip[-1] == '2':
        return True
    return False
$BODY$;

CREATE TABLE Customers (
    ID serial PRIMARY KEY NOT NULL,
    NIP_num varchar NULL,
    Name varchar NOT NULL,
    Surname varchar NULL,
    Adress_ID int NOT NULL,
    E_mail varchar NOT NULL,
    Password varchar NOT NULL,
    Phone_num varchar NOT NULL,
    Creation_date timestamp DEFAULT now()

    CONSTRAINT chk_nip CHECK (check_nip_number(NIP_num))
);