Estou tentando encontrar uma consulta que retorne uma lista de chaves estrangeiras para uma tabela e as tabelas e colunas que eles fazem referência. Estou no meio do caminho com
SELECT a.table_name,
a.column_name,
a.constraint_name,
c.owner
FROM ALL_CONS_COLUMNS A, ALL_CONSTRAINTS C
where A.CONSTRAINT_NAME = C.CONSTRAINT_NAME
and a.table_name=:TableName
and C.CONSTRAINT_TYPE = 'R'
Mas ainda preciso saber qual tabela e chave primária são referenciadas por essa chave. Como eu conseguiria isso?
oracle
metadata
database-metadata
caules
fonte
fonte
Respostas:
A chave primária referenciada é descrita nas colunas
r_owner
er_constraint_name
na tabelaALL_CONSTRAINTS
. Isso fornecerá as informações que você deseja:fonte
Tente o seguinte:
fonte
Aqui está um script para todos os fins que usamos, que foi incrivelmente útil.
Salve-o para poder executá-lo diretamente (@ fkeys.sql). Ele permitirá que você pesquise por Proprietário e a tabela Pai ou Filho e mostre os relacionamentos de chave estrangeira. O script atual faz o spool explicitamente em C: \ SQLRPTS; portanto, você precisará criar a pasta de alteração dessa linha para algo que deseja usar.
fonte
Isso percorrerá a hierarquia de chaves estrangeiras para uma determinada tabela e coluna e retornará colunas do filho e neto e de todas as tabelas descendentes. Ele usa subconsultas para adicionar r_table_name e r_column_name a user_constraints e, em seguida, usa-as para conectar linhas.
fonte
Aqui está outra solução. Usar as visualizações padrão do sys é muito lento (aproximadamente 10s na minha situação). Isso é muito mais rápido que isso (aprox. 0,5s).
fonte
"_CURRENT_EDITION_OBJ"
não é reconhecido.SYS."_CURRENT_EDITION_OBJ"
porSYS.OBJ$
. Seria executado em 10g e 11g. E verifique se você possui privilégios suficientes. Também mudei minha resposta comSYS.OBJ$
.Se você precisar de todas as chaves estrangeiras do usuário, use o seguinte script
baseado no código de Vincent Malgrat
fonte
Eu sei que é meio tarde para responder, mas deixe-me responder de qualquer maneira, algumas das respostas acima são bastante complicadas, portanto, aqui está uma abordagem muito mais simples.
fonte
Caso deseje criar restrições FK da tabela de ambiente UAT para Live, ative abaixo da consulta dinâmica .....
fonte
Minha versão, na minha humilde opinião, mais legível:
fonte
::
com:
etable
comtabl
É um pouco tarde para responder, mas espero que minha resposta tenha sido útil para alguém que precisa selecionar chaves estrangeiras compostas.
fonte
Usei o código abaixo e serviu ao meu propósito
fonte
fonte
user_constraints
para paraall_constraints
conforme necessário.fonte
fonte
Para Load UserTable (lista de chaves estrangeiras e as tabelas a que se referem)
fonte