El jue, 27-08-2009 a las 17:23 -0400, Alvaro Herrera escribió: > 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. >
Muchas gracias Alvaro por tus observaciones y aclaraciones. Al final la query la dejé así: select a.attrelid, a.attname from pg_database db, pg_class c, pg_attribute a where a.attrelid = c.oid and c.oid = 'MI_TABLA'::regclass and db.oid=16385 --id de la BD and a.attnum>=0 --condicion para no mostrar los atributos asignados por sistema and NOT a.attisdropped --condicion para no mostrar los elementos eliminados ; Saludos! Roberto
signature.asc
Description: Esto es una parte de mensaje firmado digitalmente
