Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Uma chave estrangeira pode fazer referência a um índice não exclusivo?


Da documentação do MySQL :

O InnoDB permite que uma restrição de chave estrangeira faça referência a uma chave não exclusiva. Esta é uma extensão InnoDB para SQL padrão.

No entanto, há uma razão prática para evitar chaves estrangeiras em colunas não exclusivas da tabela referenciada. Ou seja, qual deve ser a semântica de "ON DELETE CASCADE" nesse caso?

A documentação aconselha mais :

A manipulação de referências de chave estrangeira para chaves não exclusivas ou chaves que contêm valores NULL não está bem definida (...) É aconselhável usar chaves estrangeiras que referenciam apenas chaves UNIQUE (incluindo PRIMARY) e NOT NULL.