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<stephenam...@inbox.lv>
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

Reply via email to