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

Kan jeg opdatere en INT-værdi + 1 og returnere den nye værdi?

Enkelt svar - nej, det er ikke muligt.

Længere svar, ja, hvis du bruger en lagret procedure, der øger værdien for det angivne ID, henter den nye værdi og returnerer den.

Jeg har lige testet dette under 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

Brug:

CALL increment(uniqid)

Hvis flere samtidige adgange er mulige, kan du ønske at LOCK tabellen først for at sikre operationens atomicitet - MySQL tillader tilsyneladende ikke, at lagrede procedurer selv låser tabeller.



  1. MySQL IN() for to værdier/array?

  2. Lower()-funktionen på internationale tegn i postgresql

  3. Sådan viser du nulværdier, når du kører forespørgsler i psql (PostgreSQL)

  4. At få duplikerede indtastningsfejl fra Hibernate, er MySQL skylden?