No MySQL, como obtenho uma lista de todas as restrições de chave estrangeira que apontam para uma tabela específica? uma coluna em particular? É a mesma coisa que esta pergunta sobre o Oracle , mas para o MySQL.
mysql
foreign-keys
innodb
Christian Oudard
fonte
fonte
where REFERENCED_TABLE_SCHEMA = 'mydatabase' and REFERENCED_TABLE_NAME = 'mytable'
EDIT: Como indicado nos comentários, esta não é a resposta correta para a pergunta do OP, mas é útil conhecer este comando. Essa pergunta apareceu no Google para o que eu estava procurando e achei que eu deixaria essa resposta para os outros encontrarem.
Encontrei esta resposta aqui: MySQL: show constraints on tables command
Eu precisava desse caminho porque queria ver como o FK funcionava, em vez de apenas ver se ele existia ou não.
fonte
<yourtable>
, nem todas as restrições que apontam para<yourtable>
.display foreign keys mysql
no google, pode ser por isso;)Se você usa o InnoDB e define FKs, pode consultar o banco de dados information_schema, por exemplo:
fonte
Postagem em uma resposta antiga para adicionar algumas informações úteis.
Eu tive um problema semelhante, mas também queria ver o CONSTRAINT_TYPE junto com os nomes de tabela e coluna REFERENCED. Assim,
Para ver todos os FKs na sua tabela:
Para ver todas as tabelas e FKs no seu esquema:
Para ver todos os FKs no seu banco de dados:
Lembrar!
Isso está usando o mecanismo de armazenamento InnoDB. Se você não consegue exibir nenhuma chave estrangeira depois de adicioná-la, provavelmente é porque suas tabelas estão usando o MyISAM.
Checar:
Para corrigir, use o seguinte:
fonte
Como alternativa à resposta do nó, se você usar o InnoDB e definir FKs, poderá consultar o banco de dados information_schema, por exemplo:
para chaves estrangeiras de <table> ou
para chaves estrangeiras em <table>
Você também pode obter o UPDATE_RULE e DELETE_RULE, se desejar.
fonte
Esta solução não apenas exibirá todas as relações, mas também o nome da restrição, que é necessário em alguns casos (por exemplo, contra-queda):
Se você deseja verificar as tabelas em um banco de dados específico, no final da consulta, adicione o nome do esquema:
Da mesma forma, para um nome de coluna específico, adicione
no final da consulta.
Inspirado por este post aqui
fonte
O uso de REFERENCED_TABLE_NAME nem sempre funciona e pode ser um valor NULL. A seguinte consulta pode funcionar:
fonte
Uma maneira rápida de listar seus FKs (referências de chave estrangeira) usando o
Esta consulta assume que as restrições e todas as tabelas referenciadas e de referência estão no mesmo esquema.
Adicione seu próprio comentário.
Fonte: manual oficial do mysql.
fonte
A solução que encontrei é frágil; depende da convenção de nomenclatura do django para chaves estrangeiras.
Então, na concha,
fonte
Para encontrar todas as tabelas que contêm uma chave estrangeira específica , como
employee_id
fonte
Se você também deseja obter o nome da coluna da chave estrangeira:
fonte