Mysql
 sql >> база данни >  >> RDS >> Mysql

Мога ли да получа уникален TIMESTAMP за всеки запис в MySQL

Някой ден скоро (5.6.4) MySQL ще предостави дробни секунди в колоните TIMESTAMP обаче дори частични секунди не са гарантирани, че са уникални, макар че теоретично те най-често биха били уникални, особено ако сте ограничили MySQL до една нишка.

Можете да използвате UUID ако имате нужда от уникален номер, който е поръчан временно.

SELECT UUID() дава нещо като:

45f9b8d6-8f00-11e1-8920-842b2b55ce56

И малко по-късно:

004b721a-8f01-11e1-8920-842b2b55ce56

Първите три части на UUID се състоят от времето, но те са подредени от най-висока точност до най-малко, така че ще трябва да обърнете първите три части, като използвате SUBSTR() и CONCAT() така:

SELECT CONCAT(SUBSTR(UUID(), 15, 4), '-', SUBSTR(UUID(), 10, 4),
  '-', SUBSTR(UUID(), 1, 8))

Добиви:

11e1-8f00-45f9b8d6

Очевидно не можете да използвате функция като тази като стойност по подразбиране, така че ще трябва да я зададете в код, но това е гарантирана уникална стойност, подредена във времето. UUID() работи на много по-ниско ниво от секунди (тактови цикли), така че е гарантирано уникален при всяко повикване и има ниски допълнителни разходи (без заключване като auto_increment).

Използването на UUID() на сървъра на базата данни може да бъде за предпочитане пред използването на подобна функция, като microtime() на PHP функция на сървъра на приложения, защото вашият сървър на база данни е по-централизиран. Възможно е да имате повече от един сървър на приложения (уеб), който може да генерира сблъскващи се стойности, а microtime() все още не гарантира уникални стойности.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Пребройте броя на последователните посещения

  2. PHP MySQLI Предотвратяване на SQL инжекция

  3. Сравнете стойностите на времевите марки и задайте стойност на всеки от тях, в случай че са се променили

  4. sunspot solr недефиниран тип поле

  5. имплементирайте LIKE заявка в PDO