179 votes

Comment ajouter une contrainte not null à une colonne existante dans MySQL ?

J'ai une table appelée "Personne" avec les noms de colonnes suivants

P_Id(int),
LastName(varchar),
FirstName (varchar).

J'ai oublié de donner NOT NULL Contrainte de P_Id .

J'ai maintenant essayé d'ajouter la requête suivante NOT NULL Contrainte sur la colonne existante appelée P_Id ,

1. ALTER TABLE  Person MODIFY  (P_Id NOT  NULL);
2. ALTER TABLE Person ADD CONSTRAINT NOT  NULL NOT NULL (P_Id);

J'obtiens une erreur de syntaxe : ....

288voto

Framework Points 32799

Il suffit d'utiliser un ALTER TABLE... MODIFY... interroger et ajouter NOT NULL dans votre définition de colonne existante. Par exemple :

ALTER TABLE Person MODIFY P_Id INT(11) NOT NULL;

Attention : vous devez spécifier l'option complet lors de l'utilisation d'une colonne MODIFY demande. Si votre colonne a, par exemple, un DEFAULT ou un commentaire de colonne, vous devez le spécifier dans le champ MODIFY avec le type de données et le NOT NULL sous peine d'être perdue. La pratique la plus sûre pour se prémunir contre de telles mésaventures est de copier la définition de la colonne à partir de la sortie d'un fichier SHOW CREATE TABLE YourTable modifiez-la pour y inclure l'élément NOT NULL et collez-la dans votre ALTER TABLE... MODIFY... demande.

0 votes

@ShaktiSingh Quelle est la différence entre modify colonne et change colonne ?

4 votes

@Positive pourquoi avez-vous écrit INT(11) et pas seulement INT ? Quel est l'effet de la 11 ?

2 votes

Je ne suis pas sûr qu'il soit nécessaire de l'ajouter à nouveau, même si vous ne souhaitez peut-être pas le modifier.

23voto

Maran Manisekar Points 601

Essayez ceci, vous saurez faire la différence entre changer et modifier,

ALTER TABLE table_name CHANGE curr_column_name new_column_name new_column_datatype [constraints]

ALTER TABLE table_name MODIFY column_name new_column_datatype [constraints]
  • Vous pouvez modifier le nom et le type de données d'une colonne particulière à l'aide de la fonction CHANGE .
  • Vous pouvez modifier le type de données d'une colonne particulière à l'aide de la fonction MODIFY . Vous ne pouvez pas modifier le nom de la colonne à l'aide de cette instruction.

J'espère que j'ai bien expliqué en détail.

9voto

David Thomas Points 315

J'aimerais ajouter :

Après la mise à jour, par exemple

ALTER TABLE table_name modify column_name tinyint(4) NOT NULL;

Si vous obtenez

ERROR 1138 (22004): Invalid use of NULL value

Veillez à mettre d'abord à jour la table pour que la colonne concernée contienne des valeurs (afin qu'elle ne soit pas nulle).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X