Re: Secuencias y tablas

From: Carlos Bazán <infobaz(at)vtr(dot)net>
To: pgsql-es-ayuda(at)postgresql(dot)org
Cc: Julio Cesar Rodriguez Dominguez <jurasec(at)gmail(dot)com>
Subject: Re: Secuencias y tablas
Date: 2010-03-17 14:42:49
Message-ID: 201003171042.50410.infobaz@vtr.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Gracias, lo que hice y me funciona es lo siguiente:

select table_schema, table_name, substring(column_default from
E'\\(\'([a-z_.]+)') as secuencia
from information_schema.columns
where column_default ~ '_seq';

Hace exactamente lo que quiero.

Saludos
Carlos Bazán

El Tuesday 16 March 2010 21:40:47 Julio Cesar Rodriguez Dominguez escribió:
> El 16 de marzo de 2010 18:30, Carlos Bazán <infobaz(at)vtr(dot)net> escribió:
> > Estimados listeros,
> > Tengo una serie de tablas con campos tipo serial y lo que necesito hacer
> > es tener un listado de estas tablas y sus respectivas secuencias.
> > He buscado en el tema de consultar el catálogo pero no logro dar con
> > asociar
> > una determinada secuencia a la tabla que la usa.
> >
> > Se agradece la luz al respecto.
> >
> > Gracias
>
> Probablemente hubiera ayudado buscar en la lista, hay algunos ejemplos por
> ahí; puede ser un inicio esto
>
> SELECT c.oid,n.nspname as esquema,c.relname as tabla,a.attname as
> campo,pg_catalog.format_type(a.atttypid, a.atttypmod),
> pg_catalog.pg_get_userbyid(c.relowner) as "propietario",(SELECT
> substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid) for 128)
>
>
> FROM pg_catalog.pg_attrdef d WHERE d.adrelid = a.attrelid AND d.adnum =
> a.attnum AND a.atthasdef) as modificadores
> FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid =
> c.relnamespace left join pg_catalog.pg_attribute a on a.attrelid=c.oid
> WHERE c.relkind ='r'
> AND n.nspname <> 'pg_catalog'
> AND n.nspname <> 'information_schema'
> AND n.nspname !~ '^pg_toast'
> AND pg_catalog.pg_table_is_visible(c.oid) AND a.attnum > 0
> ORDER BY 2,3;
>
> Lo que dijo Jaime C. tambien puede ayudarte:
>
> "todo depende de como asociaste la secuencia y de que version de
> postgres estemos hablando.
>
> al menos desde 8.0 en adelante existe la funcion
> pg_get_serial_sequence(table_name, column_name) pero solo funciona
> cuando la secuencia se asocio automaticamente usando serial o
> bigserial (a partir del 8.4 podra funcionar tambien para secuencias
> que hayan sido asociadas a una columna usando ALTER SEQUENCE ... OWNED
> BY ...) "

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message elizabeth pacheco 2010-03-17 14:45:47 Saludos
Previous Message Joac 2010-03-17 13:46:26 Función para un disparador (control del campo serial)