我的印象是,让 MySQL 通过生成主键UUID()
会使密钥在服务器之间是唯一的,等等。
但是,无法获取最后插入的 UUID,这需要每次插入时都执行一个额外的 select 语句。
是否可以让 PHP 生成与 MySQL 生成的完全相同的UUID()
内容?
我的印象是,让 MySQL 通过生成主键UUID()
会使密钥在服务器之间是唯一的,等等。
但是,无法获取最后插入的 UUID,这需要每次插入时都执行一个额外的 select 语句。
是否可以让 PHP 生成与 MySQL 生成的完全相同的UUID()
内容?
不,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
生成器。
我尝试了第一步:$uuid = UUID::v4();
但它挂起了我的服务器,所以我想到了另一个想法,我尝试如下:
从查询中获取数据$sql1 = SELECT UUID() AS uuid ;
然后存储在变量中$uuid
然后在下面使用
$sql = "INSERT INTO mytable (uuid, foo) VALUES ('{$uuid}', 'bar');";
echo "The UUID is: ". $uuid;