Mysql
 sql >> Base de données >  >> RDS >> Mysql

Déclencheur MySQL avant d'insérer une colonne de mise à jour avec un nouvel identifiant d'auto-incrémentation

AUTO_INCREMENT colonne ne sont définies qu'après insérer.

Si vous avez besoin d'accéder cette valeur, vous ne pouvez que dans un AFTER INSERT gâchette. Cependant, vous ne pouvez pas modifier une valeur de colonne dans un AFTER UPDATE déclencheur...

De plus, vous ne pouvez pas effectuer de mise à jour sur la table utilisée dans votre AFTER INSERT déclencheur comme (http://dev.mysql. com/doc/refman/5.0/en/stored-program-restrictions.html ):

Ici, la seule solution raisonnable serait de créer une procédure stockée pour mettre à jour la table, en ajustant les colonnes pertinentes dans une transaction pour "émuler" votre instruction d'insertion atomique.

Cela étant dit, dans votre cas particulier , la key la colonne est redondante car cette colonne n'est que la concaténation de deux autres colonnes de la même ligne.

Étant donné son nom, ne cherchez-vous pas plutôt un moyen de créer une clé composée ? Quelque chose comme ça :

ALTER TABLE tbl ADD UNIQUE KEY (countryCode, id);