Hier ist mein Code im Moment:PostgreSQL Einschränkungen - Daten prüfen und einige regex
CREATE TABLE sektors (
id_sektors SERIAL PRIMARY KEY,
laukuma_nosaukums varchar(100) UNIQUE,
m2 int CHECK(m2 ~ '^[^0-9]*$')
datums_no date CHECK(datums_no XXX???),
datums_lidz date CHECK(datums_lidz XXX???),
id_koka_veds int NOT NULL REFERENCES koku_veids(id_veids),
id_audzesanas_veids int NOT NULL REFERENCES audzesanas_veids(id_audzesanas_veids),
id_senu_veids int NOT NULL REFERENCES senu_veids(id_senu_veids)
);
Was ich erreichen möchte:
laukuma_nosaukums - Einträge nur einmalig enthalten
m2 - können nur Zahlen enthalten? Weiß nicht, ob das stimmt.
datums_no - Ich weiß nicht, wie ich es schreiben soll, aber ich möchte es so: Ich kann nur Datum eingeben, das älter als das aktuelle Datum ist.
datums_lidz - Weiß ich auch nicht. Ich möchte es so: Ich kann nur ein Datum eingeben, das NICHT älter als 3 Monate vom aktuellen Datum ist.
Der ganze Sinn der Verwendung des entsprechenden Datentyps ** ist **, um unzulässige Werte für diesen Datentyp zu verhindern. Eine 'int'-Spalte kann ** nur ** Zahlen speichern, es ist also nicht notwendig, eine Prüfbedingung zu verwenden. Plus: 'regex' ist für Strings, nicht für Zahlen. –
Oh sry, ich habe es. Kannst du mir mit Dates helfen? Auch, macht diese Regex: (\ d {6}) \ - (\ d {5}) die Sache für XXXXXX-XXXXX, wobei X die Nummer ist? –
Gültige Zahlen dürfen kein '-' in der Mitte haben. –