Testen, ob Spalte vorhanden ist
Tach zusammen,
um fuer einen Kopier-Job von einer Tabelle in 'ne andere Tabelle
festzustellen, ob in der Zieltabelle eine bestimmte Spalte "nam"
vorhanden ist, bemuehe ich folgendes Konstrukt - welches mir
genaugenommen die Anzahl an Spalten mit dem Bezeichner "nam"
zurueckliefert, logischerweise also Null oder Eins:
=> select count(pg_class.relname) from pg_class, pg_attribute
where pg_attribute.attname = 'nam'
and pg_class.oid = pg_attribute.attrelid
and pg_class.relname = '<Zieltabelle>';
Dann weiss ich sicher, ob ich die Spalte "nam" mitkopieren darf oder
nicht - geht das eigentlich auch einfacher ? :-)
Es geht mir nicht um die Laufzeit des Konstruktes, das wird nur alle
paar Jahrhunderte aufgerufen. Vielmehr frage ich mich, ob es sowas
schon vorgefertigt gibt - vielleicht in einer Form, die nicht
ausschliesslich auf unserer bevorzuten DB laeuft.
Tschuess,
Martin.
--
Unix _IS_ user friendly - it's just selective about who its friends are !
------------------------------------------------------------ --------------
---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo [at] postgresql.org so that your
message can get through to the mailing list cleanly
Re: Testen, ob Spalte vorhanden ist
Martin Spott schrob:
> =3D> select count(pg_class.relname) from pg_class, pg_attribute
> where pg_attribute.attname =3D 'nam'
> and pg_class.oid =3D pg_attribute.attrelid
> and pg_class.relname =3D '<Zieltabelle>';
>
>
> Dann weiss ich sicher, ob ich die Spalte "nam" mitkopieren darf oder
> nicht - geht das eigentlich auch einfacher ? :-)
Ja, mit der Sicht information_schema.columns:
<http://www.postgresql.org/docs/8.1/static/information-schema.html>
> Es geht mir nicht um die Laufzeit des Konstruktes, das wird nur alle
> paar Jahrhunderte aufgerufen. Vielmehr frage ich mich, ob es sowas
> schon vorgefertigt gibt - vielleicht in einer Form, die nicht
> ausschliesslich auf unserer bevorzuten DB laeuft.
Das information_schema ist AFAIR seit 1999 im SQL-Standard.
Gruß
Andreas
---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo [at] postgresql.org so that your
message can get through to the mailing list cleanly
Re: Testen, ob Spalte vorhanden ist
Andreas Seltenreich wrote:
> Martin Spott schrob:
>> Dann weiss ich sicher, ob ich die Spalte "nam" mitkopieren darf oder
>> nicht - geht das eigentlich auch einfacher ? :-)
>
> Ja, mit der Sicht information_schema.columns:
>
> <http://www.postgresql.org/docs/8.1/static/information-schema.html>
[...]
> Das information_schema ist AFAIR seit 1999 im SQL-Standard.
Vielen Dank fuer die Idee, genau sowas suchte ich - sieht zwar nicht so
'spannend' aus wie mein Eigengewaechs, aber irgendwie angenehmer ;-)
Tschuess,
Martin.
--
Unix _IS_ user friendly - it's just selective about who its friends are !
------------------------------------------------------------ --------------
---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster