我原本认为只要使用MySQL通过UUID()
生成主键,就可以确保该键在不同服务器上是唯一的。
但是,无法获得最后插入的UUID,这要求每次插入时都需要执行额外的select语句。
是否有可能让PHP生成与MySQL生成完全相同的UUID()
?
我原本认为只要使用MySQL通过UUID()
生成主键,就可以确保该键在不同服务器上是唯一的。
但是,无法获得最后插入的UUID,这要求每次插入时都需要执行额外的select语句。
是否有可能让PHP生成与MySQL生成完全相同的UUID()
?
不,PHP无法生成与MySQL相同的UUID()
,因为它是(完全)随机数。
看起来您的问题是希望在MySQL中使用UUID()
,但不想执行额外的查询来找出新的UUID
。
那么为什么不让PHP创建用作INSERT
查询中主键的UUID
呢? php.net上的这个评论应该向您展示如何实现此操作。
使用这些示例函数:
$uuid = UUID::v4();
$sql = "INSERT INTO mytable (uuid, foo) VALUES ('{$uuid}', 'bar');";
echo "The UUID is: ". $uuid;
编辑:在该页面上有几种生成不同类型的UUID
的方法。 v4
是伪随机的,但您可以使用不同的版本或创建自己的UUID
生成器。
UUID()
,INSERT
语句SELECT
变量$uuid = UUID::v4();
,但它挂起了我的服务器,所以我想到了另一个想法,我按照以下方式尝试:$sql1 = SELECT UUID() AS uuid ;
$uuid
中$sql = "INSERT INTO mytable (uuid, foo) VALUES ('{$uuid}', 'bar');";
echo "The UUID is: ". $uuid;