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