[英]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。 解决方案在下面的链接中。 您可以生成唯一值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.