Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy mogę uzyskać unikalny TIMESTAMP dla każdego rekordu w MySQL?

Niedługo (5.6.4) MySQL dostarczy ułamkowe sekundy jednak w kolumnach TIMESTAMP nawet ułamki sekund nie są gwarantowane jako unikalne, chociaż teoretycznie najczęściej byłyby unikalne, zwłaszcza jeśli ograniczysz MySQL do jednego wątku.

Możesz użyć UUID jeśli potrzebujesz unikalnego numeru, który jest zamawiany tymczasowo.

SELECT UUID() daje coś takiego:

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

A jakiś czas później:

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

Pierwsze trzy części UUID składają się z czasu, jednak są one uporządkowane od najwyższej precyzji do najmniejszej, więc musisz odwrócić pierwsze trzy części za pomocą SUBSTR() i CONCAT() tak:

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

Plony:

11e1-8f00-45f9b8d6

Oczywiście nie możesz użyć funkcji takiej jak ta jako wartości domyślnej, więc musisz ustawić ją w kodzie, ale jest to gwarantowana unikatowa, czasowo uporządkowana wartość. UUID() działa na znacznie niższym poziomie niż sekundy (cykle zegara), więc jest gwarantowane unikatowe przy każdym wywołaniu i ma niski narzut (brak blokowania, takiego jak auto_increment).

Używanie UUID() na serwerze bazy danych może być preferowane niż używanie podobnej funkcji, takiej jak microtime() PHP działają na serwerze aplikacji, ponieważ serwer bazy danych jest bardziej scentralizowany. Możesz mieć więcej niż jeden serwer aplikacji (sieci), który może generować kolidujące wartości, a microtime() nadal nie gwarantuje unikalnych wartości.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Objaśnienie MySQL COALESCE()

  2. Jak MySQL przetwarza ORDER BY i LIMIT w zapytaniu?

  3. Czy można zdefiniować kolumnę sygnatury czasowej, która nie ma wartości null i nie ma wartości domyślnej ani specjalnego zachowania podczas aktualizacji?

  4. Jak mogę ustawić hasło mysql w scenariuszu z uruchomionym mysqld_safe?

  5. Jaki jest prawidłowy i bezpieczny sposób utrzymania zalogowania użytkownika? ciasteczka? sesja? PHP i MYSQL