Mysql
 sql >> база данни >  >> RDS >> Mysql

Мога ли да актуализирам INT стойност + 1 и да върна новата стойност?

Прост отговор - не, не е възможно.

По-дълъг отговор, да, ако използвате съхранена процедура, която увеличава стойността за посочения идентификатор, извлича новата стойност и я връща.

Току-що тествах това под 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

Употреба:

CALL increment(uniqid)

Ако са възможни няколко едновременни достъпи, може да пожелаете да LOCK първо таблицата, за да се гарантира атомарността на операцията - MySQL очевидно не позволява на съхранените процедури да заключват сами таблици.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sequelize:Грешка:Грешка:Table1 не е свързана с Table2

  2. Опитайте отново при блокиране за MySQL / SQLAlchemy

  3. MySQL Изберете последните 7 дни

  4. Попълване на падащо меню въз основа на предишен избор

  5. node.js mySQL връзка чрез сингълтон