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

Емулиране на безопасна за транзакция SEQUENCE в MySQL

Ако автоматичното увеличение не е достатъчно добро за вашите нужди, можете да създадете механизъм за атомна последователност с n наименувани последователности като това:

Създайте таблица за съхраняване на вашите последователности:

CREATE TABLE sequence (
  seq_name varchar(20) unique not null,
  seq_current unsigned int not null
);

Ако приемем, че имате ред за 'foo' в таблицата, можете атомарно да получите следващия идентификатор на последователността, както следва:

UPDATE sequence SET seq_current = (@next := seq_current + 1) WHERE seq_name = 'foo';
SELECT @next;

Не се изискват ключалки. И двата оператора трябва да се изпълнят в една и съща сесия, така че локалната променлива @next действително да се дефинира, когато изборът се случи.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да се справим с масивното съхранение на записи в базата данни за целите на упълномощаване на потребителя?

  2. Последна дата и час от уникален индекс на mysql

  3. Схема на база данни на системата за съобщения

  4. MySQL Unicode литерали

  5. Как автоматично увеличаване в рамките на подмножество на таблицата MYSQL