web-dev-qa-db-fra.com

Comment ajouter une contrainte non nulle à une colonne existante dans MySQL

J'ai un nom de table appelé "Personne" avec les noms de colonnes suivants

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

J'ai oublié de donner la contrainte NOT NULL à P_Id.

Maintenant, j'ai essayé avec la requête suivante d'ajouter NOT NULL Constraint à une 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);

Je reçois une erreur de syntaxe ....

146
mymotherland

Utilisez simplement une requête ALTER TABLE... MODIFY... et ajoutez _NOT NULL_ à votre définition de colonne existante. Par exemple:

_ALTER TABLE Person MODIFY P_Id INT(11) NOT NULL;
_

Attention: vous devez à nouveau spécifier la définition de colonne complète lors de l'utilisation d'une requête MODIFY. Si votre colonne a, par exemple, une valeur DEFAULT ou un commentaire de colonne, vous devez la spécifier dans l'instruction MODIFY avec le type de données et le _NOT NULL_. être perdu. Pour éviter de tels incidents, la méthode la plus sûre consiste à copier la définition de colonne à partir du résultat d'une requête _SHOW CREATE TABLE YourTable_, à la modifier pour inclure la contrainte _NOT NULL_ et à la coller dans votre requête _ALTER TABLE... MODIFY..._.

234
Shakti Singh

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 [constrints]

ALTER TABLE table_name MODIFY column_name new_column_datatype [constraints]

  • Vous effectuez l'opération MODIFY pour changer, mais l'inverse n'est pas possible.
  • Vous pouvez changer le nom et le type de données de la colonne particulière en utilisant CHANGE.
  • Vous pouvez modifier le type de données de la colonne en utilisant 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.

15
Maran Manisekar