Witam, stworzyłem funkcje sprawdzajaca czy wpisywane dane sa poprawne jednak nie działa ona poprawnie. Oto jej kod:
  1. CREATE FUNCTION sprawdz() RETURNS TRIGGER AS '
  2. BEGIN IF new.imie ISNULL THEN
  3. RAISE EXCEPTION ''Brakuje imienia!'';
  4. END IF;
  5. IF new.nazwisko ISNULL THEN
  6. RAISE EXCEPTION ''Brakuje nazwiska!'';
  7. END IF;
  8. IF new.pesel IS NULL THEN
  9. RAISE EXCEPTION ''Brakuje peselu dla % %!'', new.imie, new.nazwisko;
  10. END IF;
  11. IF new.klient_id < 0 THEN
  12. RAISE EXCEPTION ''Podaj poprawny numer id dla % %!'', new.imie, new.nazwisko;
  13. END IF;
  14. IF new.pozwolenie IS NULL THEN
  15. RAISE EXCEPTION ''Brakuje pozwolenia dla % %!!'', new.imie, new.nazwisko;
  16. END IF;
  17.  
  18. RETURN new;
  19. END;
  20. ' LANGUAGE 'plpgsql';


Wywołujący ją trigger:
  1. CREATE TRIGGER trig2 BEFORE INSERT OR UPDATE ON klient
  2. FOR EACH ROW EXECUTE PROCEDURE sprawdz();

I tabela klient:
  1. CREATE TABLE Klient(
  2. klient_id serial PRIMARY KEY,
  3. imie varchar(30) NOT NULL CHECK ,
  4. nazwisko varchar(30) NOT NULL CHECK,
  5. pesel varchar(30) NOT NULL CHECK,
  6. pozwolenie varchar(30)NOT NULL CHECK);

Co wpisać w CHECK(), zeby to sprawdzało i jak zadeklarować klient_id, zeby mozliwa była do wpisania tylko liczba.
Z góry dziękuje za odpowiedz.
Pozdrawiam.