Hola Lista
Los unique se pueden implementar por indices o por constraints, para sacar
la lista por los primeros (indice):
select
s.nspname as schema_name,
t.relname as table_name,
i.relname as index_name,
a.attname as column_name,
ix.*
from
pg_class t,
pg_class i,
pg_index ix,
pg_attribute a,
pg_namespace s
where
t.oid = ix.indrelid
and i.oid = ix.indexrelid
and a.attrelid = t.oid
and a.attnum = ANY(ix.indkey)
and t.relkind = 'r'
and t.relnamespace=s.oid
and ix.indisunique and not ix.indisprimary
-- and s.nspname='<schema>'
-- and t.relname='<tabla>'
-- and a.attname='<columna>'
para sacar los implementados por constraints:
select cc.conrelid::regclass AS table_from,
confrelid::regclass AS table_to,
cc.conname,
cc.contype,
pg_get_constraintdef(cc.oid) as definicion
from pg_catalog.pg_constraint cc
JOIN pg_namespace n ON n.oid = cc.connamespace
join pg_catalog.pg_class c on c.oid = cc.conrelid
join pg_catalog.pg_attribute a on a.attrelid = cc.conrelid
and a.attnum = any(cc.conkey)
where
cc.contype = 'u'
-- and n.nspname = '<schema>'
-- and cc.conrelid::regclass = '<tabla>'
-- and cc.conname='<columna>'
group by 1,2,3,4,5
El 21 de septiembre de 2017, 12:50, Stephen Amell<[email protected]>
escribió:
> Buenas tardes Lista!
>
> Hoy les escribo porque estoy desarrollando un proceso de anonimizacion de
> base de datos, que ya funciona bastante bien por cierto, pero tengo un
> problema que no puedo resolver. Los unique, si bien necesito que la tabla
> tenga PK para funcionar, necesito saber si ademas hay otra constraint
> unique que deba considerar (las que tienen el icono del 1 en azul en el
> pgadmin).
>
> Dado un campo, de una tabla, de un esquema, de una base ( o sea que
> conozco db.schema.table.campo ), necesito encontrar si este campo es parte
> de alguna constrain, y de ser asi su correspondiente drop y create.
>
> Algo asi:
>
> Select NombreUQ, DropStr, CreateStr
> From tabla_magica
> where schema = 'esquema'
> and tabla = 'tabla'
> and campo = 'campo';
>
>
> ¿Alguna sugerencia?
>
>
>
>
--
Cordialmente,
Ing. Hellmuth I. Vargas S.
Esp. Telemática y Negocios por Internet
Oracle Database 10g Administrator Certified Associate
EnterpriseDB Certified PostgreSQL 9.3 Associate