Suatu hari nanti (5.6.4), MySQL akan menyediakan fraksional detik di kolom TIMESTAMP, bagaimanapun, bahkan pecahan detik tidak dijamin unik, meskipun secara teoritis, mereka paling sering unik, terutama jika Anda membatasi MySQL ke satu utas.
Anda dapat menggunakan UUID jika Anda membutuhkan nomor unik yang dipesan sementara.
SELECT UUID()
menghasilkan sesuatu seperti:
45f9b8d6-8f00-11e1-8920-842b2b55ce56
Dan beberapa waktu kemudian:
004b721a-8f01-11e1-8920-842b2b55ce56
Tiga bagian pertama dari UUID terdiri dari waktu, namun urutannya dari presisi tertinggi hingga terkecil, jadi Anda harus membalik tiga bagian pertama menggunakan SUBSTR()
dan CONCAT()
seperti ini:
SELECT CONCAT(SUBSTR(UUID(), 15, 4), '-', SUBSTR(UUID(), 10, 4),
'-', SUBSTR(UUID(), 1, 8))
Hasil:
11e1-8f00-45f9b8d6
Anda jelas tidak dapat menggunakan fungsi seperti ini sebagai nilai default, jadi Anda harus menyetelnya dalam kode, tetapi ini adalah nilai yang dipesan secara temporal dan unik yang dijamin. UUID() bekerja pada tingkat yang jauh lebih rendah daripada detik (siklus jam), jadi dijamin unik dengan setiap panggilan dan memiliki overhead yang rendah (tidak ada penguncian seperti auto_increment).
Menggunakan UUID() pada server database mungkin lebih disukai daripada menggunakan fungsi serupa, seperti microtime()
PHP berfungsi pada server aplikasi karena server database Anda lebih terpusat. Anda mungkin memiliki lebih dari satu server aplikasi (web), yang dapat menghasilkan nilai bertabrakan, dan microtime() masih tidak menjamin nilai unik.