Mysql
 sql >> Database >  >> RDS >> Mysql

Posso aggiornare un valore INT + 1 e restituire il nuovo valore?

Risposta semplice:no, non è possibile.

Risposta più lunga, sì, se utilizzi una procedura memorizzata che incrementa il valore per l'ID specificato, recupera il nuovo valore e lo restituisce.

L'ho appena testato con 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

Utilizzo:

CALL increment(uniqid)

Se sono possibili più accessi simultanei, potresti voler LOCK la tabella prima per garantire l'atomicità dell'operazione:apparentemente MySQL non consente alle procedure memorizzate di bloccare le tabelle stesse.