Jednoduchá odpověď – ne, to není možné.
Delší odpověď, ano, pokud používáte uloženou proceduru, která zvyšuje hodnotu pro zadané ID, načte novou hodnotu a vrátí ji.
Právě jsem to testoval pod 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
Použití:
CALL increment(uniqid)
Pokud je možný více současných přístupů, můžete chtít LOCK
nejprve tabulku, aby byla zajištěna atomicita operace - MySQL zjevně neumožňuje uloženým procedurám samy zamykat tabulky.