MySql sunucusu üzerinde otomatik üretilen ve eşsiz rakam-harf karışık(hexadecimal) bir ID ye ihtiyacımız olduğunda mysql’in UUID() honksiyonunukullanırız.
Bu fonkisyon bize "90mur931-5f08-59r7-20ag-34ams0211985" şeklinde benzersiz(unique) ve rakam-harf karışık(hexadecimal), 36 karakter, 128bit uzunluğunda bir id üretir. Bu ID’yi otomatik şifre atamalarından tutun, database lerimizde birincil anahtar(primaryKey) olarak kullanabileceğiniz bir çok yer vardır.
SELECT UUID();
Çıktı:

Yukarıdaki id’nin 36 karakterini değilde belirli bir kısmını kullanmak isterseniz aşağıdaki örneklerden faydalanabilirsiniz.
UUID’nin soldan 8 karakterini kullanmak isterseniz aşağıdaki komutu kullanabilirsiniz.
SELECT LEFT(UUID(),8) 'UUID()';
Çıktı:

UUID’nin sağdan 12 karakterini kullanmak isterseniz aşağıdaki komutu kullanabilirsiniz.
SELECT RIGHT(UUID(),12) 'UUID()';
Çıktı:

Üretilen UUID’nin içindeki “-” ortadan tire karakterini kaldırmak isterseniz aşağıdaki komutu kullanabilirsiniz.
SELECT REPLACE(UUID(),'-','')
Çıktı:

UUID’yi yukarıdaki kullanmak çok büyük yapılarda performan sorunlarına yol açabilir. Bu sorunu ortadan kaldırmak için önerilen yöntem UUId yi database de “BINARY” tipinde saklamaktır.
yapılması gereken işlemler sırasıyla şunlardır.
– Önce üretilen uuid’deki “-” işaretini yukarıdaki yöntemle kaldırın ve id yi 32 karaktere düşürün.
– Sonra uuid’yi database de tutacak alanı hazırlayalım. Yukarıda belirttiğimiz gibi uuid’yi “BINARY” tipinde saklayacağız ancak mySql’de “BINARY” nin 8 bitlik bir kapasitesi vardır ama bizim 128bit lik alana ihtiyacımız var. (8bit*16 = 128bit) Bu yüzden “BINARY(16)” olarak alan tanımı yapacağız.
– Daha sonra kayıt ekleme (insert) işlemi aşağıdaki gibidir.
INSERT INTO TableName (bin16UuidAlani) VALUES (UNHEX(REPLACE(UUID(),'-','')))
– Database’e attığımız UUID’yi sorgulamak/görmek istersek aşağıdaki komutu kullanırız.
SELECT HEX(bin16UuidAlani) AS FieldBin FROM TableName

Yorum bırakın