sql >> Base de Datos >  >> RDS >> Mysql

¿Puedo actualizar un valor INT + 1 y devolver el nuevo valor?

Respuesta simple:no, no es posible.

Respuesta más larga, sí, si usa un procedimiento almacenado que incrementa el valor de la ID especificada, recupera el nuevo valor y lo devuelve.

Acabo de probar esto en 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

Uso:

CALL increment(uniqid)

Si son posibles varios accesos simultáneos, es posible que desee LOCK la tabla primero para asegurar la atomicidad de la operación - MySQL aparentemente no permite que los procedimientos almacenados bloqueen las tablas por sí mismos.