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
Martin Spott [ Do, 01 Juni 2006 00:39 ] [ ID #1336606 ]

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
Andreas Seltenreich [ Do, 01 Juni 2006 01:57 ] [ ID #1338224 ]

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
Martin Spott [ Do, 01 Juni 2006 07:43 ] [ ID #1338225 ]
Datenbanken » gmane.comp.db.postgresql.german » Testen, ob Spalte vorhanden ist

Vorheriges Thema: Neu dabei und vermutlich -> nur ein Haufen alter Fragen.
Nächstes Thema: LinuxTag 2006 in Wiesbaden