Gostaria de cancelar minha assinatura neste grupo...pois me recadastrei com
outro email...

 

Rdrigo

 

De: pgbr-geral [mailto:pgbr-geral-boun...@listas.postgresql.org.br] Em nome
de Jean Pereira
Enviada em: quinta-feira, 28 de março de 2013 08:18
Para: Comunidade PostgreSQL Brasileira
Assunto: Re: [pgbr-geral] descobrir nas System Tables quais tabelas de um
schema, utilizam uma certa coluna como FK

 

On 03/27/2013 23:44, Marcos Aurelio Nobre wrote: 

sALLdações .

Boa noite. Estou precisando de uma ajuda.

Em um servidor 9.1 tenho três schemas A, B e C

Em A há uma tabela X que tem a coluna C como sua PK

Em B há 30 tabelas que tem C como FK com a DRI : ON UPDATE CASCADE ON DELETE
NO ACTION.

Em C há 400 tabelas e 80% delas tem C como FK, porém sem DRI implementado
nas contraints.

Então eu não gostaria de "entrar" em cerca de 200 ~ 300 tabelas , excluir as
FK-Constraints que referem-se / mencionam C e recriá-las com a DRI de
update-cascade.

Assim eu vos pergunto:

1) Existe algum commando de DDL tipo ALTER CONSTRAINT <.....> que pudesse
ser aplicado a estas tabela, modificando-lhes ou incorporando-lhes um UPDATE
CASCADE ?

Bom... acho eu que não... mais tem outras pessoas que podem te ajudar
nisso...



 

2) Existe algum SELECT que possa ser aplicado às SYSTEM TABLES de modo que
eu descubra quais tabelas utilizam a coluna C como foreign key ?


Talvez ajude você..

SELECT distinct tc.constraint_name,
    tc.constraint_type,
    tc.table_schema,
    tc.table_name,
    kcu.column_name,
    tc.is_deferrable,
    tc.initially_deferred,
    rc.match_option AS match_type,
    rc.update_rule AS on_update,
    rc.delete_rule AS on_delete,
    ccu.table_schema,
    ccu.table_name AS references_table,
    ccu.column_name AS references_field
FROM information_schema.table_constraints tc
    LEFT JOIN information_schema.key_column_usage kcu
        ON tc.constraint_catalog = kcu.constraint_catalog
        AND tc.constraint_schema = kcu.constraint_schema
        AND tc.constraint_name = kcu.constraint_name
    LEFT JOIN information_schema.referential_constraints rc
        ON tc.constraint_catalog = rc.constraint_catalog
        AND tc.constraint_schema = rc.constraint_schema
        AND tc.constraint_name = rc.constraint_name
    LEFT JOIN information_schema.constraint_column_usage ccu
        ON rc.unique_constraint_catalog = ccu.constraint_catalog
        AND rc.unique_constraint_schema = ccu.constraint_schema
        AND rc.unique_constraint_name = ccu.constraint_name
WHERE lower(tc.constraint_type) in ('foreign key')
    AND ccu.table_name = 'nome da tablea que tens a PK'
    --AND ccu.column_name = 'campo PK'
    --AND kcu.column_name = 'nome do campo nas FK'
order by tc.constraint_name





 

3) Outra variante de consulta e descobrir qual constraint utiliza 

 

Gratos:

MN






_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

 

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a