sql >> Database >  >> RDS >> Mysql

Hoe maak ik een reeks in MySQL?

Dit is een oplossing die wordt voorgesteld door de MySQl-handleiding :

Als expr als argument wordt gegeven aan LAST_INSERT_ID(), wordt de waarde van het argument geretourneerd door de functie en onthouden als de volgende waarde die moet worden geretourneerd door LAST_INSERT_ID(). Dit kan worden gebruikt om reeksen te simuleren:

Maak een tabel om de volgordeteller vast te houden en initialiseer deze:

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

Gebruik de tabel om volgnummers als volgt te genereren:

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

De UPDATE-instructie verhoogt de reeksteller en zorgt ervoor dat de volgende aanroep van LAST_INSERT_ID() de bijgewerkte waarde retourneert. De SELECT-instructie haalt die waarde op. De mysql_insert_id() C API-functie kan ook worden gebruikt om de waarde op te halen. Zie Sectie 23.8.7.37, "mysql_insert_id()".

U kunt reeksen genereren zonder LAST_INSERT_ID() aan te roepen, maar het nut van het gebruik van de functie op deze manier is dat de ID-waarde op de server wordt behouden als de laatst automatisch gegenereerde waarde. Het is veilig voor meerdere gebruikers omdat meerdere clients de UPDATE-instructie kunnen uitgeven en hun eigen reekswaarde kunnen krijgen met de SELECT-instructie (of mysql_insert_id()), zonder dat dit invloed heeft op of wordt beïnvloed door andere clients die hun eigen reekswaarden genereren.



  1. Hoe SQL Server op een Mac te installeren

  2. Tel het aantal dagen tussen 2 datums in JPA

  3. Kan ik een weergave maken met een parameter in MySQL?

  4. Hoe gebeurt databasecorruptie?