Re: obtener esquema de tabla de una clave foranea

From: Anthony Rafael Sotolongo Leon <asotolongo(at)uci(dot)cu>
To: Yoel Mc Lennan <listas(at)yoel(dot)com(dot)ar>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: obtener esquema de tabla de una clave foranea
Date: 2011-04-06 01:52:49
Message-ID: 1838268074.1454001302054769265.JavaMail.root@ucimail1.uci.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

espero haber entendido la pregunta y si es asi mira a ver si te sirve esto

SELECT pg_constraint.conname as nombrellave , pg_get_constraintdef(pg_constraint.oid) as definicion, pg_class.relname AS tabla,(select b.nspname||'.'||a.relname from pg_class a ,pg_namespace b where a.relnamespace=b.oid and a.oid=pg_constraint.confrelid) as tablaforanea,
case confmatchtype
when 'u' then 'MATCH simple '
when 'f' then 'MATCH full'
when 'p' then 'MATCH partial'
end as tipo,
case confupdtype
when 'a' then 'no action '
when 'r' then 'restrict'
when 'c' then 'cascade'
when 'n' then 'set null'
else
'default'

end as onupdate ,
case confdeltype
when 'a' then 'no action '
when 'r' then 'restrict'
when 'c' then 'cascade'
when 'n' then 'set null'
else
'default'

end as ondelete
FROM pg_constraint, pg_class
WHERE ((pg_constraint.contype = 'f'::"char") AND (pg_constraint.conrelid =
pg_class.oid))

----- Mensaje original -----
De: "Yoel Mc Lennan" <listas(at)yoel(dot)com(dot)ar>
Para: pgsql-es-ayuda(at)postgresql(dot)org
Enviados: Martes, 5 de Abril 2011 11:19:07 (GMT-0500) Auto-Detected
Asunto: [pgsql-es-ayuda] obtener esquema de tabla de una clave foranea

Buenas tanto tiempo J , molestando nuevamente por una consulta;

En este select necesitaría poder agregar un campo con el esquema al que pertenece la tabla a la que hace referencia la clave foránea

Este select me devuelve un registro para cada FK de la tabla “cuarto” del esquema “stock”, lo que me falta es el el esquema al que pertenece la tabla de la FK J

SELECT conname, pg_catalog.pg_get_constraintdef(oid) as condef FROM pg_catalog.pg_constraint r WHERE r.conrelid = (SELECT c.oid FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnam espace WHERE c.relname ~ '^cuarto$' AND n.nspname ~ '^stock$') AND r.contype = 'f';

Gracias por cualquier pista.

Yoel

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Yoel Mc Lennan 2011-04-06 12:47:56 RE: Relacion de uno a uno o a ninguno
Previous Message Gaston Rider 2011-04-06 01:25:01 Relacion de uno a uno o a ninguno