Chaves Estrangeiras


No MariaDB Server 3.23.44 e posterior, tabelas InnoDB suportam verificação de restrição de chaves estrangeiras, incluindo CASCADE, ON DELETE, e ON UPDATE. Leia "Restrições FOREIGN KEY".

Para outros tipos de tabela, o MariaDB Server atualmente apenas analisa a sintaxe de FOREIGN KEY no comando CREATE TABLE, mas não usa/armazena esta informação. Em um futuro próximo esta implementação será estendida para que assim a informação seja armazenada num arquivo de especificação de tabela e possa ser recuperado por mysqldump e ODBC. Em um estágio posterior, restrições de chaves estrangeiras serão implementadas para tabelas MyISAM.

Note que as chaves estrangeiras no SQL não são usadas para ligar tabelas, mas são usadas para verificar a integridade referencial. Se você deseja obter resultados de múltiplas tabelas de uma instrução SELECT, você pode fazer isto ligando tabelas:

SELECT * FROM table1,table2 WHERE table1.id = table2.id;

See "Sintaxe JOIN". Leia "Utilizando Chaves Estrangeiras".

Quando usada como uma restrição, FOREIGN KEYs não precisa ser usado se a aplicação insere duas linhas em tabelas MyISAM na ordem apropriada.

Para tabelas MyISAM, você pode contornar a falta de ON DELETE adicionando a instrução DELETE apropriada a uma aplicação quando você deletar registros de uma tabela que tem uma chave estrangeira. Na prática isto é mais rápido e muito mais portável que utilizar chaves estrangeiras.

No MariaDB Server 4.0 você pode utilizar deleções multi-tabela para apagar linha de muitas tabelas com um comando. Leia "Sintaxe DELETE".

A sintaxe FOREIGN KEY sem ON DELETE ... é usada geralmente por aplicacões ODBC para produzir cláusulas WHERE automáticas.

Note que chaves estrangeiras são mal usadas com frequência, o que pode causar graves problemas. Mesmo quando usado apropriadamente, o suporte a chaves estrangeiras não é uma solução mágica para o problema de integridade referêncial, embora possa ajudar.

Algumas vantagens das chaves estrangeiras:

Desvantagens:

Retornar