MySQL UUID主键-由PHP或MySQL生成?

t1rydlwq  于 2023-03-07  发布在  PHP
关注(0)|答案(3)|浏览(177)

我的印象是,只要让MySQL通过UUID()生成主键,就可以使该键在服务器之间唯一,等等。
但是,there is no way to fetch the last inserted UUID,它要求每次插入时都执行一个额外的select语句。
有没有可能让PHP生成与MySQL完全相同的UUID()

kmpatx3s

kmpatx3s1#

不,PHP不可能生成与MySQL完全相同的UUID(),因为它是一个(完全)随机数。
听起来您的问题是喜欢在MySQL中使用UUID(),但不想执行额外的查询来确定新的UUID是什么。
那么,为什么不让PHP创建UUID作为INSERT查询中的主键呢?www.example.com上的这篇评论php.net应该会告诉你如何做到这一点。
使用这些示例函数:

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

编辑:该页面上有几个方法可以生成不同类型的UUIDv4是伪随机的,但您可以使用不同的版本或创建自己的UUID生成器。

px9o7tmv

px9o7tmv2#

根据具体的场景,我可能会使用存储过程。

  • 生成一个mySQL UUID()
  • 将其存储在变量中,
  • 执行INSERT语句
  • SELECT变量
p4tfgftt

p4tfgftt3#

我尝试了第一步:$uuid = UUID::v4();,但它挂起了我的服务器,所以另一个想法浮现在脑海中,我尝试如下:
从查询$sql1 = SELECT UUID() AS uuid ;获取数据
然后存储在变量$uuid
然后在下面使用

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

相关问题