Первичный ключ UUID MySQL – генерируется PHP или MySQL?

У меня сложилось впечатление, что просто с MySQL генерировать первичный ключ через UUID() сделает ключ уникальным на всех серверах и т. Д.

Но нет никакого способа получить последний вставленный UUID , который требует, чтобы дополнительный оператор select выполнялся каждый раз, когда я вставляю.

Возможно ли, чтобы PHP генерировал то же самое UUID() которое MySQL сгенерировал?

Нет, невозможно, чтобы PHP генерировал то же самое UUID() что и MySQL, потому что это (полностью) случайное число.

Похоже, ваша проблема в том, что вам нравится использовать UUID() в MySQL, но не хотите выполнять дополнительный запрос, чтобы выяснить, что нового UUID .

Итак, почему бы PHP не создать UUID который будет использоваться в качестве первичного ключа в вашем запросе INSERT ? Этот комментарий на php.net должен показать вам, как это сделать.

Используя эти функции:

 $uuid = UUID::v4(); $sql = "INSERT INTO mytable (uuid, foo) VALUES ('{$uuid}', 'bar');"; echo "The UUID is: ". $uuid; 

Изменить : на этой странице есть несколько методов, которые генерируют разные типы UUID . v4 является псевдослучайным, но вы можете использовать другую версию или создать собственный генератор UUID .

Я пробовал первый шаг: $ uuid = UUID :: v4 (); но он повесил мой сервер, поэтому мне пришла в голову другая идея, которую я пробовал следующим образом:

выборка данных из запроса $ sql1 = SELECT UUID () AS uuid; затем сохранить в переменной $ uuid

и затем используйте ниже

$ sql = "INSERT INTO mytable (uuid, foo) VALUES ('{$ uuid}', 'bar');"; echo "UUID:". $ UUID;