Re: Buscando los unique

From: Hellmuth Vargas <hivs77(at)gmail(dot)com>
To: Stephen Amell <StephenAmell(at)inbox(dot)lv>
Cc: "pgsql-es-ayuda(at)lists(dot)postgresql(dot)org" <pgsql-es-ayuda(at)lists(dot)postgresql(dot)org>
Subject: Re: Buscando los unique
Date: 2017-09-21 18:31:53
Message-ID: CAN3Qy4r9Bi8-wPxuEL_FeSByzMSteEPYabQcXsg1GP+uHQr7mQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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<StephenAmell(at)inbox(dot)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

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jay D 2017-09-22 11:12:08
Previous Message Stephen Amell 2017-09-21 17:50:32 Buscando los unique