Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :UNIQUE, mais DEFAULT NULL - autorisé par la création d'une table. Plus de 1 NULL est autorisé à insérer. Pourquoi?

Selon la spécification SQL 92 (et la façon dont vous la lisez), les contraintes uniques sont destinées à désigner les clés candidates et ne doivent donc pas autoriser les valeurs en double ni Valeurs NULL. DB2 implémente leurs contraintes uniques de cette manière. Plusieurs fournisseurs de bases de données (y compris MySQL) lisent la spécification comme ignorant les valeurs NULL, tout comme la clause Group By ignore les valeurs NULL et implémentent donc des contraintes uniques telles qu'elles ne s'appliquent qu'aux valeurs non NULL. D'autres encore traitent la valeur NULL comme sa propre valeur spéciale et n'autorisent qu'une seule entrée qui est NULL. Microsoft SQL Server implémente des contraintes uniques de cette manière. Le seul aspect cohérent entre tous les fournisseurs en ce qui concerne les contraintes d'unicité est que les valeurs non NULL doivent être uniques.