Первичный ключ MySQL UUID - сгенерированный PHP или MySQL? - PullRequest
7 голосов
/ 21 февраля 2012

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

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

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

Ответы [ 2 ]

12 голосов
/ 21 февраля 2012

Нет, невозможно, чтобы 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 s.v4 является псевдослучайным, но вы можете использовать другую версию или создать свой собственный генератор UUID.

0 голосов
/ 27 апреля 2014

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

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

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

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