Pokud vytvoříte následující tabulku:
CREATE TABLE sequence (
sequence_id BIGINT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`sequence_id`)
)
Poté zadejte tyto tři dotazy jeden po druhém:
INSERT INTO sequence () VALUES ();
DELETE FROM sequence WHERE sequence_id < LAST_INSERT_ID();
SELECT LAST_INSERT_ID() AS sequence;
Třetí dotaz je zaručený vrátit jedinečné pořadové číslo. Tato záruka platí i v případě, že máte k databázi připojeny desítky různých klientských programů. To je krása AUTO_INCREMENT.
Namísto pouhého generování jedenácti milionů těchto sekvenčních čísel předem můžete tyto dotazy SQL použít k získání jedinečného sekvenčního čísla, kdykoli je budete potřebovat.
Pokud se musíte zabalit do pořadového čísla 12 milionů, můžete místo toho použít tyto dotazy.
INSERT INTO sequence () VALUES ();
DELETE FROM sequence WHERE sequence_id < LAST_INSERT_ID();
SELECT LAST_INSERT_ID() MOD 12000000 AS sequence;
Trik je v tom použít automatické zvýšení pořadového čísla pro jedinečnost, ale také odstranit řádky v tabulce, aby nezabírala spoustu místa.
Všimněte si, že pořadové číslo LAST_INSERT_ID() můžete použít také pro jiné účely, jako je například.
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;