繁体   English   中英

为不同的表生成唯一的 id 而不是使用 mysql auto_increment

[英]generating unique id's instead of using mysql auto_increment for different tables

因此,我至少有 10 个具有自动增量功能的表,唯一的唯一列是 email 但不想使用它们,因为用户可能想稍后更改它们所以我的问题。

像这样使用并忘记生成唯一 ID 的 guid function 有多好?

function guidv4($data = null) {
   
    $data = $data ?? random_bytes(16);
    assert(strlen($data) == 16);

    $data[6] = chr(ord($data[6]) & 0x0f | 0x40);
    
    $data[8] = chr(ord($data[8]) & 0x3f | 0x80);

    return vsprintf('%s%s%s%s%s%s%s%s', str_split(bin2hex($data), 4));
}

或者我应该不时检查数据库是否有冲突?

还是我应该使用 MySQL UUID?

有两种方法可以解决这个问题。

最简单也可能是最好的方法是MySQL uuid function 但是,您也可以使用最后插入的 id 来生成 UUID,只要它保证 ID 实际上是唯一的,但是很容易出错。

您在 PHP 中创建的具有唯一 ID 的数据有时会给出相同的 output。 解决方案在下面的链接中。 您可以生成唯一值。

https://www.php.net/manual/en/function.uniqid.php#120123

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM