【发布时间】:2012-03-11 22:47:14
【问题描述】:
我的印象是,让 MySQL 通过 UUID() 生成主键会使该键在服务器之间具有唯一性,等等。
但是,there is no way to fetch the last inserted UUID,它要求每次插入时都执行一个额外的选择语句。
是否可以让 PHP 生成与 MySQL 生成的完全相同的UUID()?
【问题讨论】:
标签: php mysql random uuid lastinsertid
我的印象是,让 MySQL 通过 UUID() 生成主键会使该键在服务器之间具有唯一性,等等。
但是,there is no way to fetch the last inserted UUID,它要求每次插入时都执行一个额外的选择语句。
是否可以让 PHP 生成与 MySQL 生成的完全相同的UUID()?
【问题讨论】:
标签: php mysql random uuid lastinsertid
不,PHP 不可能生成与 MySQL 完全相同的UUID(),因为它是一个(完全)随机数。
听起来您的问题是您喜欢在 MySQL 中使用 UUID(),但不想执行额外的查询来确定新的 UUID 是什么。
那么为什么不让 PHP 创建UUID 用作INSERT 查询中的主键呢? This comment on php.net 应该会告诉你如何做到这一点。
使用这些示例函数:
$uuid = UUID::v4();
$sql = "INSERT INTO mytable (uuid, foo) VALUES ('{$uuid}', 'bar');";
echo "The UUID is: ". $uuid;
编辑:该页面上有几种方法可以生成不同类型的UUIDs。 v4 是伪随机的,但您可以使用不同的版本或创建自己的 UUID 生成器。
【讨论】:
我尝试了第一步:$uuid = UUID::v4();,但它挂起了我的服务器,所以我想到了另一个想法,我尝试如下:
从查询$sql1 = SELECT UUID() AS uuid ;获取数据
然后存储在变量$uuid
然后在下面使用
$sql = "INSERT INTO mytable (uuid, foo) VALUES ('{$uuid}', 'bar');";
echo "The UUID is: ". $uuid;
【讨论】: