In unseren Stammdaten möchten wir nur Postleitzahlen, Buchstaben sind dort falsch. In unseren Buchungen möchten wir als Typ nur 'K' oder 'D' haben, nichts anderes. Wir nutzen nun Constraints, um Falscheingaben zu verhindern.
Wird eine Spalte mit einem Contraint 'NOT NULL' belegt, muss der Wert zwingend in der Eingabe vorhanden sein, da PostgreSQL ansonsten die Werte mit einer Fehlermeldung zurückweist.
001 --
002 -- einige Constraints, um nur erwünschte Daten zu erlauben
003 --
004
005 -- die PLZ muß aus 5 Ziffern bestehen
006 ALTER TABLE kunden ADD CONSTRAINT plz_check CHECK (plz ~ '^[0-9][0-9][0-9][0-9][0-9]$');
007
008 -- der Typ der Buchung darf nur aus 'Z' oder 'A'
009 ALTER TABLE buchungen ADD CONSTRAINT typ_check CHECK (typ ~ '^[AZ]$');
010
011 -- ebenfalls muss der Buchungstyp angegeben werden
012 ALTER TABLE buchungen ALTER COLUMN typ SET NOT NULL;
013
014 -- der Wert muß ausgefüllt werden
015 ALTER TABLE buchungen ALTER COLUMN wert SET NOT NULL;
016
017 -- und der Wert der Buchung darf nicht kleiner als 0 sein
018 ALTER TABLE buchungen ADD CONSTRAINT wert_check CHECK (wert > 0);
019
020
021 -- Test:
022
023 -- PLZ mit 4 Stellen (sollte fehlschlagen)
024 INSERT INTO kunden (kundenname, plz, ort) VALUES ('Kunde 6', 1234, 'Ort 6');
Download constraints.sql