sql >> Databáze >  >> RDS >> Mysql

Mohu aktualizovat hodnotu INT + 1 a vrátit novou hodnotu?

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.



  1. Průvodce Pgpool pro PostgreSQL:Část druhá

  2. Pole PHP jako vstup do uložené procedury

  3. Pochopení granularity zámků v MySQL

  4. Jak předat pole řetězců v parametru SQL do klauzule IN v SQL