sql >> Database >  >> RDS >> Mysql

Kan een refererende sleutel verwijzen naar een niet-unieke index?

Van MySQL-documentatie :

InnoDB staat een externe sleutelbeperking toe om te verwijzen naar een niet-unieke sleutel. Dit is een InnoDB-extensie voor standaard SQL.

Er is echter een praktische reden om externe sleutels te vermijden op niet-unieke kolommen van de tabel waarnaar wordt verwezen. Dat wil zeggen, wat zou in dat geval de semantiek van "ON DELETE CASCADE" moeten zijn?

De documentatie adviseert verder :

De behandeling van refererende sleutelverwijzingen naar niet-unieke sleutels of sleutels die NULL-waarden bevatten, is niet goed gedefinieerd (...) U wordt geadviseerd externe sleutels te gebruiken die alleen verwijzen naar UNIEKE (inclusief PRIMAIRE) en NIET NULL-sleutels.



  1. Hoe make_timestamptz() werkt in PostgreSQL

  2. Hoe kan ik verwijderen met INNER JOIN met SQL Server?

  3. Hoe de WEIGHT_STRING()-functie werkt in MySQL

  4. Schema Switch-A-Roo:deel 2