Может ли now() вернуть одинаковое время в разных транзакциях?
Вобщем может ли now() вернуть одинаковое время в разных транзакциях? (часы обратно переводить никто не будет) 
Ответы (1 шт):
Да, может.
Разные тразакции могут быть запущены на разных ядрах процесора. Время для всех ядер процессора идёт одинаково. Так что, при такой ситуации, две транзакции начнутся однновременно.
Другой вопрос - вероятность такой ситуации. Конечно, она маловероятна. Но, когда кто то хочет искусственно вызывать коллизию - он может быть весьма настройчив.
Если Вам нужен ключ, независимый от времени - лучше использовать GUID.
Если нужно "выстроить транзакции в очередь по порядку" - можно использовать время, а потом положиться на стабильность мироздания :-) Но тогда может быть неопределенный результат - как награда за многопоточность