Als u de volgende tabel maakt:
CREATE TABLE sequence (
sequence_id BIGINT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`sequence_id`)
)
Geef vervolgens deze drie vragen na elkaar op:
INSERT INTO sequence () VALUES ();
DELETE FROM sequence WHERE sequence_id < LAST_INSERT_ID();
SELECT LAST_INSERT_ID() AS sequence;
De derde vraag is gegarandeerd om een uniek volgnummer te retourneren. Deze garantie geldt zelfs als u tientallen verschillende clientprogramma's op uw database hebt aangesloten. Dat is het mooie van AUTO_INCREMENT.
In plaats van alleen elf miljoen van deze volgnummers vooraf te genereren, kunt u deze SQL-query's gebruiken om een uniek volgnummer te krijgen wanneer u het nodig hebt.
Als u het volgnummer 12 miljoen moet afronden, kunt u in plaats daarvan deze zoekopdrachten gebruiken.
INSERT INTO sequence () VALUES ();
DELETE FROM sequence WHERE sequence_id < LAST_INSERT_ID();
SELECT LAST_INSERT_ID() MOD 12000000 AS sequence;
De truc hier is om een automatisch oplopend volgnummer te gebruiken voor uniciteit, maar om ook de rijen in de tabel te verwijderen, zodat deze niet veel ruimte in beslag neemt.
Merk op dat u het volgnummer van LAST_INSERT_ID() ook voor andere doeleinden kunt gebruiken, zoals bijvoorbeeld.
INSERT INTO sequence () VALUES ();
DELETE FROM sequence WHERE sequence_id < LAST_INSERT_ID();
INSERT INTO user (userid, username, phone)
VALUES (LAST_INSERT_ID() MOD 12000000, 'Joe', '800-555-1212');
SELECT LAST_INSERT_ID() MOD 12000000 AS sequence;