Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Kann ich einen INT-Wert + 1 aktualisieren und den neuen Wert zurückgeben?

Einfache Antwort - nein, das ist nicht möglich.

Längere Antwort, ja, wenn Sie eine gespeicherte Prozedur verwenden, die den Wert für die angegebene ID erhöht, den neuen Wert abruft und zurückgibt.

Ich habe das gerade unter MySQL 5.1.59 getestet:

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

Verwendung:

CALL increment(uniqid)

Wenn mehrere gleichzeitige Zugriffe möglich sind, können Sie LOCK die Tabelle zuerst, um die Unteilbarkeit der Operation sicherzustellen - MySQL erlaubt anscheinend nicht, dass gespeicherte Prozeduren Tabellen selbst sperren.