У меня сложилось впечатление, что просто с 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;