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

Emulacja bezpiecznej dla transakcji SEKWENCJI w MySQL

Jeśli auto-inkrementacja nie jest wystarczająco dobra dla Twoich potrzeb, możesz utworzyć atomowy mechanizm sekwencji za pomocą n nazwane sekwencje takie jak to:

Utwórz tabelę do przechowywania sekwencji:

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

Zakładając, że masz wiersz dla „foo” w tabeli, możesz niepodzielnie uzyskać następujący identyfikator sekwencji:

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

Nie wymaga zamków. Obie instrukcje muszą zostać wykonane w tej samej sesji, tak aby zmienna lokalna @next była faktycznie zdefiniowana, gdy nastąpi wybór.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sqlalchemy zwraca nieaktualne wiersze?

  2. Laravel Sail odbudowuje domyślną bazę danych

  3. Wyświetlanie * w tabeli

  4. Lokalizacja tabel bazy danych - MySQL - Windows XP

  5. Nie możesz określić tabeli docelowej do aktualizacji w klauzuli FROM