我是仅仅有MySQL的通过UUID()
生成主键将使键唯一跨服务器的印象,等MySQL UUID主键 - 由PHP或MySQL生成?
但是,there is no way to fetch the last inserted UUID,这需要一个额外的select语句每次我插入的时间内完成下。
是否有可能让PHP产生与MySQL相同的UUID()
?
我是仅仅有MySQL的通过UUID()
生成主键将使键唯一跨服务器的印象,等MySQL UUID主键 - 由PHP或MySQL生成?
但是,there is no way to fetch the last inserted UUID,这需要一个额外的select语句每次我插入的时间内完成下。
是否有可能让PHP产生与MySQL相同的UUID()
?
不,不可能让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;
编辑:有页面上几种方法能产生不同类型的UUID
秒。 v4
是伪随机的,但您可以使用不同的版本或创建自己的UUID
生成器。
我试过第一步:$ uuid = UUID :: v4();但它挂起了我的服务器,所以我想到了另一个想法,我试着如下:
从查询获取数据$ sql1 = SELECT UUID()AS uuid; 然后在变量$ UUID存储
,然后使用下面
$ SQL = “INSERT INTO MYTABLE(UUID,FOO)VALUES( '{$ UUID}', '酒吧');”; echo“UUID是:”。 $ UUID;
嗯,使用这种方法,我不得不检查它是否是MySQL中唯一的uuid,以及它是否是跨服务器唯一的。似乎每种方式都需要额外的检查独特或数据拉取? – ina 2012-02-24 03:19:36
如果使用随机生成的UUID,则不会出现此问题。根据统计,如果您在100年内每秒产生** 10亿** UUID ** **,**只有一个**会有50%的机会发生碰撞。 (来源:http://en.wikipedia.org/wiki/Universally_unique_identifier#Random_UUID_probability_of_duplicates)尽管你可能永远不会看到冲突,但将UUID作为MySQL主键并定期同步服务器仍然很明智。 – 2012-02-24 14:32:50