sql >> Databasteknik >  >> RDS >> Mysql

Emulerar en transaktionssäker SEKVENS i MySQL

Om automatisk ökning inte är tillräckligt bra för dina behov kan du skapa en atomsekvensmekanism med n namngivna sekvenser så här:

Skapa en tabell för att lagra dina sekvenser:

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

Om du antar att du har en rad för 'foo' i tabellen kan du atomärt få nästa sekvens-id så här:

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

Inga lås krävs. Båda satserna måste köras i samma session, så att den lokala variabeln @next faktiskt definieras när selektionen sker.



  1. PHP-varning:mysqli_connect():(HY000/2002):Anslutning nekad

  2. Hur man ändrar kolumner eller genererar Alter-skript genom att använda GUI i SQL Server - SQL Server / T-SQL självstudie del 38

  3. Använda versionskontroll (Git) på en MySQL-databas

  4. Ta bort DEFINER-satsen från MySQL Dumps