Eu tenho uma tabela cuja chave primária é referenciada em várias outras tabelas como uma chave estrangeira. Por exemplo:
CREATE TABLE `X` (
`X_id` int NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`X_id`)
)
CREATE TABLE `Y` (
`Y_id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`X_id` int DEFAULT NULL,
PRIMARY KEY (`Y_id`),
CONSTRAINT `Y_X` FOREIGN KEY (`X_id`) REFERENCES `X` (`X_id`)
)
CREATE TABLE `Z` (
`Z_id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`X_id` int DEFAULT NULL,
PRIMARY KEY (`Z_id`),
CONSTRAINT `Z_X` FOREIGN KEY (`X_id`) REFERENCES `X` (`X_id`)
)
Agora, não sei quantas tabelas existem no banco de dados que contêm chaves estrangeiras no X, como as tabelas Y e Z. Existe uma consulta SQL que eu possa usar para retornar:
- Uma lista de tabelas que possuem chaves estrangeiras no X
- E qual dessas tabelas realmente tem valores na chave estrangeira
mysql
foreign-keys
Mel
fonte
fonte
Manual de Referência do MySQL 5.5: "Restrições InnoDB e FOREIGN KEY"
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, restrição de queda):
Se você deseja verificar as tabelas em um banco de dados específico, adicione o seguinte:
fonte
Você pode encontrar todas as informações relacionadas ao esquema na
information_schema
tabela com nome inteligente .Você pode querer verificar a tabela
REFERENTIAL_CONSTRAINTS
eKEY_COLUMN_USAGE
. O primeiro diz quais tabelas são referenciadas por outras pessoas; o último dirá a você como seus campos estão relacionados.fonte
Listando todas as chaves estrangeiras em um banco de dados, incluindo a descrição
restringindo a uma coluna específica em uma tabela
fonte
Eu escrevi um pouco de bash onliner que você pode escrever em um script para obter uma saída amigável:
mysql_references_to:
Portanto, a execução:
mysql_references_to transaccion
(onde transaccion é um nome de tabela aleatório) fornece uma saída como esta:fonte
Mais fácil:
1. Abra o phpMyAdmin
2. À esquerda, clique no nome do banco de dados
3. No canto superior direito, encontre a guia "Designer"
Todas as restrições serão mostradas lá.
fonte