Estou procurando uma consulta que permita recuperar informações de chave estrangeira (cada linha: tabela e campo de referência, tabela e campo referenciados) de um esquema inteiro.
Encontrei isso, mas não fornece todas as informações necessárias: /programming/4389228/sql-for-oracle-to-check-if-a-constraint-exists
Atualmente, estou trabalhando nisso e pode acabar com uma solução nos próximos minutos / horas. Mas se alguém já tiver uma solução completa, ficarei feliz em conhecê-la :)
oracle
query
foreign-key
Z gelado
fonte
fonte
Respostas:
Depois de alguma "engenharia reversa" nas consultas feitas pela ferramenta Navicat ao abrir a janela da tabela de design para uma tabela (consultas que recuperam informações sobre chaves estrangeiras aparecem na janela de histórico ), eis uma solução:
fonte
O SQL Developer é fornecido com um relatório que faz exatamente isso.
Faz isso apenas para o esquema de login, mas é uma solução rápida para obter todos os FK do banco de dados - embora você queira omitir esquemas como 'APEX ...' e 'SYS'.
Ele também omite coisas como tabelas na lixeira.
O relatório original está no painel Relatórios, nos relatórios do dicionário de dados.
Aqui está a consulta alterada para obter todos os FKs.
E aqui está a aparência desse relatório.
fonte
Um código um pouco complicado que também despeja comentários em colunas (com base no código Frosty):
Para tornar a saída mais legível, eu uso
break on TABLE_NAME;
emsqlplus
(veja minha pergunta /programming/14998296/print-only-first-unique-value-for-column-that-order-by-in-oracle-sqlplus / ).UPDATE Consulta mais simples que coleta a lista de tabelas que têm referência FK a determinada tabela (útil se você deseja limpar as restrições após a renomeação da tabela):
fonte