Jika Anda membuat tabel berikut:
CREATE TABLE sequence (
sequence_id BIGINT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`sequence_id`)
)
Kemudian keluarkan tiga pertanyaan ini satu demi satu:
INSERT INTO sequence () VALUES ();
DELETE FROM sequence WHERE sequence_id < LAST_INSERT_ID();
SELECT LAST_INSERT_ID() AS sequence;
Kueri ketiga dijamin untuk mengembalikan nomor urut yang unik. Jaminan ini berlaku bahkan jika Anda memiliki lusinan program klien berbeda yang terhubung ke database Anda. Itulah keindahan AUTO_INCREMENT.
Alih-alih hanya menghasilkan sebelas juta nomor urut ini di muka, Anda dapat menggunakan kueri SQL ini untuk mendapatkan nomor urut unik kapan pun Anda membutuhkannya.
Jika Anda harus membungkus di urutan nomor 12 juta, Anda dapat menggunakan kueri ini sebagai gantinya.
INSERT INTO sequence () VALUES ();
DELETE FROM sequence WHERE sequence_id < LAST_INSERT_ID();
SELECT LAST_INSERT_ID() MOD 12000000 AS sequence;
Triknya di sini adalah menggunakan nomor urut kenaikan otomatis untuk keunikan, tetapi juga menghapus baris dalam tabel sehingga tidak memakan banyak ruang.
Perhatikan bahwa Anda juga dapat menggunakan nomor urut LAST_INSERT_ID() untuk tujuan lain, seperti misalnya.
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;