Re: Testen, ob Spalte vorhanden ist

Lists: Postg윈 토토SQL : Postg윈
From: Martin Spott <Martin(dot)Spott(at)mgras(dot)net>
To: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Testen, ob Spalte vorhanden ist
Date: 2006-05-31 22:39:38
Message-ID: e5l5vaose5l5va$16os$1@osprey.mgras.de@osprey.mgras.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

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


From: Andreas Seltenreich <andreas+pg(at)gate450(dot)dyndns(dot)org>
To: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Re: Testen, ob Spalte vorhanden ist
Date: 2006-05-31 23:57:16
Message-ID: 871wu96943.fsf@gate450.dyndns.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: Postg윈 토토SQL : Postg윈

Martin Spott schrob:

> => 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 ? :-)

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


From: Martin Spott <Martin(dot)Spott(at)mgras(dot)net>
To: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Re: Testen, ob Spalte vorhanden ist
Date: 2006-06-01 05:43:02
Message-ID: e5lup6iqe5lup6$12iq$1@osprey.mgras.de@osprey.mgras.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

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