Com a consulta abaixo consigo obter todas as tabelas onde a chave é 
referenciada, agora só falta saber o nome do campo para o update. hehehehe

-----------------

SELECT DISTINCT deptype, classid, cl.relkind,
        CASE WHEN cl.relkind IS NOT NULL THEN cl.relkind || 
COALESCE(dep.objsubid::text, '')
             WHEN tg.oid IS NOT NULL THEN 'T'::text
             WHEN ty.oid IS NOT NULL THEN 'y'::text
             WHEN ns.oid IS NOT NULL THEN 'n'::text
             WHEN pr.oid IS NOT NULL THEN 'p'::text
             WHEN la.oid IS NOT NULL THEN 'l'::text
             WHEN rw.oid IS NOT NULL THEN 'R'::text
             WHEN co.oid IS NOT NULL THEN 'C'::text || contype
             ELSE '' END AS type,
        COALESCE(coc.relname, clrw.relname) AS ownertable,
        COALESCE(cl.relname || '.' || att.attname, cl.relname, conname, 
proname, tgname, typname, lanname, rulename, ns.nspname) AS refname,
        COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, 
nsrw.nspname) AS nspname
   FROM pg_depend dep
   LEFT JOIN pg_class cl ON dep.objid=cl.oid
   LEFT JOIN pg_attribute att ON dep.objid=att.attrelid AND 
dep.objsubid=att.attnum  LEFT JOIN pg_namespace nsc ON 
cl.relnamespace=nsc.oid
   LEFT JOIN pg_proc pr on dep.objid=pr.oid
   LEFT JOIN pg_namespace nsp ON pronamespace=nsp.oid
   LEFT JOIN pg_trigger tg ON dep.objid=tg.oid
   LEFT JOIN pg_type ty on dep.objid=ty.oid
   LEFT JOIN pg_namespace nst ON typnamespace=nst.oid
   LEFT JOIN pg_constraint co on dep.objid=co.oid
   LEFT JOIN pg_class coc ON conrelid=coc.oid
   LEFT JOIN pg_namespace nso ON connamespace=nso.oid
   LEFT JOIN pg_rewrite rw ON dep.objid=rw.oid
   LEFT JOIN pg_class clrw ON clrw.oid=rw.ev_class
   LEFT JOIN pg_namespace nsrw ON cl.relnamespace=nsrw.oid
   LEFT JOIN pg_language la ON dep.objid=la.oid
   LEFT JOIN pg_namespace ns ON dep.objid=ns.oid

  WHERE dep.refobjid=53955244::oid AND dep.refobjsubid=1
    AND classid IN (
    SELECT oid FROM pg_class
     WHERE relname IN ('pg_class', 'pg_constraint', 'pg_conversion', 
'pg_language', 'pg_proc',
                       'pg_rewrite', 'pg_namespace', 'pg_trigger', 
'pg_type'))
  ORDER BY classid, cl.relkind


[]s
Fernando



----- Original Message ----- 
From: "Guilherme Augusto da Rocha Silva" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Friday, October 19, 2007 4:02 PM
Subject: Re: [pgbr-geral]unificação de chaves estrangeiras


Fernando,

só consegui resolver isto criando funções PLPGSQL e/ou rogramas (PHP) que
comparam o conteúdo desejado e fazem um "DE-PARA" para depois unificar os
registros. Se for só em uma tabela fica mais simples... o problema é quando
outras tabelas referenciam as chaves da tabela que você está acertando... aí
dá muito mais trabalho.

Abraço.

Em Sexta 19 Outubro 2007 14:26, [EMAIL PROTECTED]
escreveu:
> Date: Fri, 19 Oct 2007 15:12:29 -0300
> From: "Fernando de Oliveira" <[EMAIL PROTECTED]>
> Subject: [pgbr-geral] unificação de chaves estrangeiras
> Pessoal,
> Tenho um cadastro base que é referenciado em diversas outras tabelas.
> Exemplo:
> codigo Nome cpf
> ---------------------------------------------------------------------------
> 1 xxxx 111111
> 2 yyyy 222222
> 3 XXXX 111111
> ---------------------------------------------------------------------------
> Observem que o cadastro 1 e 3 se referem à mesma pessoa.
> Quero trocar em todos os locais que referenciam o cadastro 3 pelo cadastro
> 1.
> Alguem tem uma sugestão de como fazer este procedimento?

-- 

/*
Guilherme Augusto da Rocha Silva
Administração de Dados / Bancos de Dados

Gerência de Tecnologia da Informação
SIM Instituto de Gestão Fiscal
*/
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a