sql >> Database >  >> RDS >> Mysql

Samengestelde MySql-sleutels en null-waarden

http://dev.mysql.com/doc/refman /5.0/en/create-index.html

"Een UNIEKE index creëert een beperking zodat alle waarden in de index verschillend moeten zijn. Er treedt een fout op als u een nieuwe rij probeert toe te voegen met een sleutelwaarde die overeenkomt met een bestaande rij. Deze beperking is niet van toepassing op NULL-waarden, behalve voor de BDB-opslagengine. Voor andere engines staat een UNIEKE index meerdere NULL-waarden toe voor kolommen die NULL kunnen bevatten."

Dus nee, je kunt MySQL niet zover krijgen dat NULL als een unieke waarde wordt behandeld. Ik denk dat je een aantal keuzes hebt:je zou kunnen doen wat je in je vraag hebt voorgesteld en een "speciale waarde" opslaan in plaats van null, of je zou de BDB-engine voor de tabel kunnen gebruiken. Ik denk echter niet dat dit kleine verschil in gedrag een ongewone keuze voor een opslagengine rechtvaardigt.




  1. Zijn externe sleutels echt nodig in een database-ontwerp?

  2. sql hoe u drie query's uit twee tabellen in één query kunt combineren

  3. Waarom kan ik afhankelijke kolommen niet uitsluiten van `GROUP BY` als ik aggregeer met een sleutel?

  4. Hoe de volgorde op prestatie te verbeteren met joins in mysql