Re: Werte Prüfen und anderes Feld mit Resultat

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
--

In response to

Browse pgsql-de-allgemein by date

  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