sql >> Databasteknik >  >> RDS >> Mysql

Kan jag uppdatera ett INT-värde + 1 och returnera det nya värdet?

Enkelt svar - nej, det är inte möjligt.

Längre svar, ja, om du använder en lagrad procedur som ökar värdet för det angivna ID:t, hämtar det nya värdet och returnerar det.

Jag har precis testat detta 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

Användning:

CALL increment(uniqid)

Om flera samtidiga åtkomster är möjliga kanske du vill LOCK tabellen först för att säkerställa operationens atomicitet - MySQL tillåter tydligen inte lagrade procedurer för att låsa tabeller själva.



  1. Vilket läge för MySQL WEEK() uppfyller ISO 8601

  2. Tabellen är "skrivskyddad"

  3. ERROR 1064 (42000):Du har ett fel i din SQL-syntax; Vill konfigurera ett lösenord som root som användaren

  4. VÄLJ den senaste posten med ett icke-nullvärde i en kolumn