From: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
---|---|
To: | Roberto Rodríguez Pino <rodpin(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Re: [pgsql-es-ayuda] nombre de columnas en catálogo |
Date: | 2009-08-27 21:23:01 |
Message-ID: | 20090827212301.GO11213@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Roberto Rodríguez Pino escribió:
> Muchas gracias a todos!
> Con esta query, logro lo que quiero.
>
> select a.attrelid, a.attname
> from pg_database db, pg_class c, pg_attribute a
> where
> a.attrelid = c.oid and
> db.oid=16385 --id de la BD
> and c.relname='MI_TABLA'
> and a.attnum>=0; --condicion para no mostrar los atributos asignados por sistema
> ;
Una aclaración: no necesitas pg_database en esa consulta. La gran
mayoría de los catálogos son locales a cada base de datos, es decir,
sólo contienen los datos de esa base de datos. Los catálogos globales
son pg_database, pg_tablespace, pg_authid y pg_auth_member (estos dos
llevan la información de roles), pg_shdepend (equivalente de pg_depend
para objetos globales) y pg_shdescription (equivalente de pg_description
para objetos globales).
Otra corrección: si tienes dos esquemas y tablas con el mismo nombre
en cada uno de ellos, la consulta de arriba te va a devolver las
columnas de ambos. En el WHERE es mejor poner
c.oid = 'MI_TABLA'::regclass
donde el "MI_TABLA" puede ir calificado con el nombre del esquema (por
ej. public.tabla1).
Finalmente, te faltó eliminar columnas borradas, "AND NOT attisdroped".
Prueba después de ALTER TABLE / DROP COLUMN.
--
Alvaro Herrera http://www.amazon.com/gp/registry/5ZYLFMCVHXC
"El conflicto es el camino real hacia la unión"
From | Date | Subject | |
---|---|---|---|
Next Message | Fernando Hevia | 2009-08-28 14:47:25 | RE: El indice no mejora me mejora el rendimiento de mis consultas. |
Previous Message | Fabio Arias | 2009-08-27 19:58:46 | VENTAJAS Y DESVENTAJAS DE PITR |