Question

J'ai une table comme ci-dessous:

create table info (username varchar(30),otherinfo varchar(100));

maintenant je veux modifier ce tableau pour avoir nouveau champ et ce domaine doit avoir une valeur par défaut comme

md5(username)

quelque chose comme ci-dessous:

alter table info add NewField varchar(100) default md5(username);

comment faire?
Merci pour votre aide

Était-ce utile?

La solution

Par MySQL docs (italique ajouté) vous ne pouvez pas avoir un l'expression dans une valeur par défaut:

  

10.1.4. Type de données Valeurs par défaut

     

La clause de valeur par défaut dans un ensemble de données   spécification de type indique un défaut   la valeur d'une colonne. Avec une   exception, la valeur par défaut doit être   constant; il ne peut pas être une fonction ou   une expression . Cela signifie, pour   par exemple, que vous ne pouvez pas régler la   par défaut pour une colonne de date à la   La valeur d'une fonction telle que NOW () ou   DATE ACTUELLE. L'exception est que   vous pouvez spécifier CURRENT_TIMESTAMP comme   la valeur par défaut pour une colonne TIMESTAMP.

Je l'ai testé que le déclencheur suivant fonctionne pour votre intention:

CREATE TRIGGER MyTriggerName
  BEFORE INSERT ON info
  FOR EACH ROW
    SET NEW.NewField = md5(NEW.username);

Autres conseils

Vous devriez écrire un déclencheur pour obtenir cette fonctionnalité, étant donné que MySQL a une fonction md5 construit ou vous êtes capable de soit écrire ou de trouver un algorithme md5 pour MySQL:)

Jetez un coup d'oeil @ http://dev.mysql.com /doc/refman/5.0/en/triggers.html

pour la fonction md5 jeter un oeil ici

http://dev.mysql.com/doc /refman/5.0/en/encryption-functions.html

En outre, vous devez savoir que MD5 est pas un algorithme sécurisé plus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top