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

Hvordan opretter jeg en sekvens i MySQL?

Dette er en løsning foreslået af MySQl manual :

Hvis expr er givet som et argument til LAST_INSERT_ID(), returneres værdien af ​​argumentet af funktionen og huskes som den næste værdi, der skal returneres af LAST_INSERT_ID(). Dette kan bruges til at simulere sekvenser:

Opret en tabel til at holde sekvenstælleren og initialiser den:

    mysql> CREATE TABLE sequence (id INT NOT NULL);
    mysql> INSERT INTO sequence VALUES (0);

Brug tabellen til at generere sekvensnumre som dette:

    mysql> UPDATE sequence SET id=LAST_INSERT_ID(id+1);
    mysql> SELECT LAST_INSERT_ID();

UPDATE-sætningen øger sekvenstælleren og får det næste kald til LAST_INSERT_ID() til at returnere den opdaterede værdi. SELECT-sætningen henter denne værdi. Mysql_insert_id() C API-funktionen kan også bruges til at få værdien. Se afsnit 23.8.7.37,"mysql_insert_id()".

Du kan generere sekvenser uden at kalde LAST_INSERT_ID(), men nytten ved at bruge funktionen på denne måde er, at ID-værdien bibeholdes på serveren som den sidst automatisk genererede værdi. Det er sikkert for flere brugere, fordi flere klienter kan udstede UPDATE-sætningen og få deres egen sekvensværdi med SELECT-sætningen(eller mysql_insert_id()), uden at påvirke eller blive påvirket af andre klienter, der genererer deres egne sekvensværdier.



  1. Opsætning og konfiguration af SQL Server-replikering

  2. Vælg erklæring for at finde dubletter på bestemte felter

  3. sql-forespørgsel, der grupperer forskellige elementer i buckets

  4. Postgres er den fedeste database – Årsag #2:Licensen