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