Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-es-ayuda by date

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

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group