sql >> Database >  >> RDS >> Mysql

Kan ik een INT-waarde + 1 bijwerken en de nieuwe waarde retourneren?

Eenvoudig antwoord - nee, dat is niet mogelijk.

Langer antwoord, ja, als u een opgeslagen procedure gebruikt die de waarde voor de opgegeven ID verhoogt, de nieuwe waarde ophaalt en retourneert.

Ik heb dit zojuist getest onder 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

Gebruik:

CALL increment(uniqid)

Als meerdere gelijktijdige toegangen mogelijk zijn, wilt u misschien LOCK de tabel eerst om de atomiciteit van de operatie te garanderen - MySQL staat blijkbaar niet toe dat opgeslagen procedures de tabellen zelf vergrendelen.



  1. Definieer een variabele binnen select en gebruik deze binnen dezelfde select

  2. MySQL - FOUT 1045 - Toegang geweigerd

  3. Hoe LPAD() werkt in MariaDB

  4. Aangepaste tekenreeksen voor datum-/tijdnotatie ondersteund door FORMAT() in SQL Server