2010-08-17 6 views
9

Pourquoi NOT NULL ajouter au champ de clé primaire (clé primaire est déjà pas nul + uniques)(MySql) Pourquoi NOT NULL ajouter au champ clé primaire? ?

Exemple pour le champ id NOT NULL:

create table student 
(
id int(11) AUTO_INCREMENT NOT NULL, 
name varchar(255), 
PRIMARY KEY(id) 
) 

Au lieu de cela seulement:

create table student 
(
id int(11) AUTO_INCREMENT, 
name varchar(255), 
PRIMARY KEY(id) 
) 

Editer: J'ajoute AUTO_INCREMENT.

Répondre

12

Ce sont les mêmes. Clé primaire obtenu NOT NULLautomatiquement.

+0

soo pourquoi peaple ajouter NOT NULL ?? – Yosef

+0

@Yosef c'est juste une question de style. Et 'mysqldump' ajoute ce' NOT NULL' quand vider une table, à cause d'un bug pour autoriser NULL dans mysql. –

3

NULL n'est pas équivalent à NULL (comme NULL indique une valeur inconnue ou absente), de sorte que vous serez autorisé à avoir plusieurs enregistrements qui ont NULL pour l'id, même si il y a une clé primaire/contrainte unique définie, d'où la utilisation de NOT NULL. C'est si MySql vous permet même de définir une clé primaire sur un champ nullable.

En outre, comme une clé primaire est souvent utilisée dans une clé étrangère dans d'autres tables, avoir une ou plusieurs valeurs NULL n'aurait pas de sens.

+1

'NULL' sur' PRIMARY KEY' enfreint la norme ISO et est considéré comme un bug dans mysql: http://bugs.mysql.com/bug.php?id=390. Voir http://en.wikipedia.org/wiki/Unique_key pour la justification de NOT NULL –

5

Vous demandez, pourquoi les gens s'embêtent à ajouter le NOT NULL quand c'est inutile? Juste parce que c'est un bon style, je suppose. Et le rend explicite pour le lecteur.

Questions connexes