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

Puis-je mettre à jour une valeur INT + 1 et renvoyer la nouvelle valeur ?

Réponse simple - non, ce n'est pas possible.

Réponse plus longue, oui, si vous utilisez une procédure stockée qui incrémente la valeur de l'ID spécifié, récupère la nouvelle valeur et la renvoie.

Je viens de tester ceci sous MySQL 5.1.59 :

CREATE PROCEDURE increment (IN uniqid VARCHAR(255))
BEGIN
   UPDATE `table` SET number = number + 1 WHERE id = uniqid;
   SELECT number FROM `table` WHERE id = uniqid;
END

Utilisation :

CALL increment(uniqid)

Si plusieurs accès simultanés sont possibles, vous souhaiterez peut-être LOCK la table en premier pour assurer l'atomicité de l'opération - MySQL n'autorise apparemment pas les procédures stockées à verrouiller les tables elles-mêmes.