hallo,
ich möchte bei Eingabe eines Array-Wertes in eine Tabelle nur bestimmte Werte zulassen. Um das zu validieren benötige ich also eine DOMAIN oder FUNKTION.
Angenommen es gibt ein Attribut Namens axisdirlists mit dem Datentyp text[].
Dazu habe ich folgende DOMAIN, die die eingegebenen Werte über folgenden regulären Ausdruck überprüfen soll.
In diesem Fall wird nur der erste Wert im text-Array überprüft. Wie kann ich alle überprüfen. Ich denke, dass man in eine DOMAIN keine FOR-Schleife setzen kann, also brauche ich wohl doch eine FUNKTION.Code:CREATE DOMAIN AxisDirectionList AS text[] CHECK( VALUE[0] ~ '[\+\-][1-9][0-9]*' );
für eure Hilfe wäre ich sehr dankbar
gruß jazzhunter
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Sollte diese "directory list" nicht lieber in eine extra Tabelle? Kling für mich danach als wäre da was nicht sauber normalisiert.
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'
ja das ist wohl war...
ich hab mir diese Funktion gebastelt...
aber da ist noch ein fehler drin...Code:CREATE OR REPLACE FUNCTION check_input(text[]) returns bool AS $$BEGIN FOR i in 0..array_upper($1,1) LOOP if $1[i] ~ '[\+\-][1-9][0-9]*' then return true; else return false; end if; END LOOP; END; $$language plpgsql;
wenn ich das richtig verstanden habe enthält doch der 2. Parameter bei der Funktion array_upper die Dimension, nicht wahr? ...in der Referenz wird das nicht deutlich
gruß jazzhunter
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
ok danke,
ich habe nun auch aufgrund der Normalisierung doch eine neue Tabelle erstellt...
gruß jazzhunter
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen