Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy mogę zaktualizować wartość INT + 1 i zwrócić nową wartość?

Prosta odpowiedź - nie, to niemożliwe.

Dłuższa odpowiedź, tak, jeśli używasz procedury składowanej, która zwiększa wartość określonego identyfikatora, pobiera nową wartość i zwraca ją.

Właśnie przetestowałem to 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

Użycie:

CALL increment(uniqid)

Jeśli możliwe jest wiele równoczesnych dostępów, możesz chcieć LOCK najpierw tabelę, aby zapewnić niepodzielność operacji — MySQL najwyraźniej nie pozwala procedurom składowanym na samodzielne blokowanie tabel.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy mogę użyć pt-online-schema-change do zmiany klucza podstawowego?

  2. Składnia SQL DELETE – wymieniona przez DBMS

  3. Jak zapisać kształt nakładki map Google w bazie danych?

  4. Pula połączeń Java MySQL nie działa

  5. Czy istnieje konwencja nazewnictwa dla MySQL?