From: | Andreas Seltenreich <andreas+pg(at)gate450(dot)dyndns(dot)org> |
---|---|
To: | "Daniel Seichter" <dseichter(at)radiomatic(dot)com> |
Cc: | <pgsql-de-allgemein(at)postgresql(dot)org> |
Subject: | Re: Werte Prüfen und anderes Feld mit Resultat |
Date: | 2005-12-06 21:52:21 |
Message-ID: | 871x0pki5m.fsf@gate450.dyndns.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-de-allgemein |
Daniel Seichter writes:
> ich habe in einer Tabelle 2 wesentliche Felder. Artikel(char(12))
> und Artikelart(char(1)).
> Die Artikelart ist so definiert, dass:
> wenn Artikellänge = 8 dann Artikelart='m'
> wenn Artikellänge = 12 dann Artikelart='a'
[...]
> es können über ein Check-Constraint nur Artikel mit 8 oder 12
> Stellen eingefügt werden. Nun habe ich aber das Problem, mit dem
> Prüfen für die Artikelart.
Wieso hältst du überhaupt "Artikelart" auf der Platte, wenn die Spalte
redundant ist? Besseres Design wäre, sie aus der anderen in einer
Sicht zu erzeugen. Etwa so:
create view artikel_view as
select artikel,
case
when length(artikel) = 8 then 'm'
when length(artikel) = 16 then 'a'
else NULL
end as Artikelart
from artikel;
Dann müsstest du auch nicht per Trigger um die Anomalien
herumarbeiten.
Gruß
Andreas
--
From | Date | Subject | |
---|---|---|---|
Next Message | Andreas Seltenreich | 2005-12-06 22:55:29 | Re: PL/pgSQL Zuweisungsoperator |
Previous Message | W. Haslbeck | 2005-12-06 21:04:34 | Winbashing |