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
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 |