sql >> Database teknologi >  >> RDS >> Mysql

Emulering af en transaktionssikker SEKVENS i MySQL

Hvis automatisk stigning ikke er godt nok til dine behov, kan du oprette en atomsekvensmekanisme med n navngivne sekvenser som denne:

Opret en tabel til at gemme dine sekvenser:

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

Hvis du antager, at du har en række for 'foo' i tabellen, kan du atomisk få det næste sekvens-id på denne måde:

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

Ingen låse påkrævet. Begge sætninger skal udføres i samme session, så den lokale variabel @next faktisk er defineret, når udvælgelsen sker.



  1. Erstat standard nulværdier returneret fra venstre ydre sammenføjning

  2. Sådan beregnes en kvadratrod i SQL

  3. PostgreSQL-forespørgsel til at tælle/gruppere efter dag og vise dage uden data

  4. LOAD DATA LOKAL INFIL forbudt i... PHP