Ini adalah solusi yang disarankan oleh Panduan MySQl :
Jika expr diberikan sebagai argumen ke LAST_INSERT_ID(), nilai argumen dikembalikan oleh fungsi dan diingat sebagai nilai berikutnya yang akan dikembalikan oleh LAST_INSERT_ID(). Ini dapat digunakan untuk mensimulasikan urutan:
Buat tabel untuk menampung penghitung urutan dan inisialisasi:
mysql> CREATE TABLE sequence (id INT NOT NULL); mysql> INSERT INTO sequence VALUES (0);
Gunakan tabel untuk menghasilkan nomor urut seperti ini:
mysql> UPDATE sequence SET id=LAST_INSERT_ID(id+1); mysql> SELECT LAST_INSERT_ID();
Pernyataan UPDATE menambah penghitung urutan dan menyebabkan panggilan berikutnya ke LAST_INSERT_ID() untuk mengembalikan nilai yang diperbarui. Pernyataan SELECT mengambil nilai itu. Fungsi mysql_insert_id() C API juga dapat digunakan untuk mendapatkan nilai. Lihat Bagian 23.8.7.37,“mysql_insert_id()”.
Anda dapat membuat urutan tanpa memanggil LAST_INSERT_ID(), tetapi kegunaan fungsi dengan cara ini adalah bahwa nilai ID dipertahankan di server sebagai nilai yang dihasilkan secara otomatis terakhir. Ini aman untuk multi-pengguna karena banyak klien dapat mengeluarkan pernyataan UPDATE dan mendapatkan nilai urutannya sendiri dengan pernyataan SELECT (atau mysql_insert_id()), tanpa memengaruhi atau dipengaruhi oleh klien lain yang menghasilkan nilai urutannya sendiri.