Baron Schwartz rappelle à juste titre une différence importante entre un index unique et une clé primaire.
Un index UNIQUE crée une contrainte d’unicité de telle manière que toutes les valeurs contenues dans l’index doivent être distinctes. Si l’on essaie d’ajouter une nouvelle ligne contenant une valeur qui se trouve déjà dans l’index, une erreur sera générée. Cette contrainte ne s’applique pas aux valeurs NULL, ainsi, un index UNIQUE permet de multiples valeurs NULL pour les colonnes qui sont définies comme pouvant contenir NULL.
Pour cette raison, il est impossible de créer une clé PRIMARY sur des champs NULL.