sql >> Database >  >> RDS >> Mysql

Een transactieveilige SEQUENCE emuleren in MySQL

Als auto-increment niet goed genoeg is voor uw behoeften, kunt u een atoomvolgordemechanisme maken met n benoemde reeksen als volgt:

Maak een tabel om uw reeksen op te slaan:

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

Ervan uitgaande dat je een rij voor 'foo' in de tabel hebt, kun je atomair de volgende reeks-ID als volgt krijgen:

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

Geen sloten nodig. Beide instructies moeten in dezelfde sessie worden uitgevoerd, zodat de lokale variabele @next daadwerkelijk wordt gedefinieerd wanneer de selectie plaatsvindt.



  1. Wat is NoSQL en hoe wordt het gebruikt?

  2. Wat gebruikt LISTAGG met ORDER BY NULL eigenlijk als bestelcriterium?

  3. Hoe te bestellen met maximaal twee kolommen die nul kunnen zijn in MySQL?

  4. Wat betekent pooling=false in een MySQL-verbindingsreeks?