php - 在 mysql 中创建一个更长的唯一自动增量列,第一行有 6 个字符

标签 php mysql auto-increment unique-key

可以在 mysql 中创建一个自动增量列,我可以在一个列上创建一个自动生成的数字,该数字对所有行都是唯一的,并且随机数超过 6 个字符并且是字母数字吗?

我目前正在使用 PHP。

function randomCode(){
    $alphabet = "8ABCDEFGIJKLMmNPQjhgkhjg";
    $Code = array();
    $alphaLength = strlen($alphabet) - 1;
    for ($i = 0; $i < 8; $i++){
        $n = rand(0, $alphaLength);
        $Code[] = $alphabet[$n];
        }
    return implode($Code);
    }

但问题是我无法控制存储在数据库中的代码的唯一性。

最佳答案

实际上,您不能在 MySQL 中本地执行此操作。此 DBMS 不支持序列。唯一受支持的自动选项是普通的 auto_increment - 通常是连续的(但是 - 是的,您可以对其进行一些小的调整,但是,这对您的情况没有帮助)。因此,您无法使用 MySQL 实现您的目标,您必须在您的应用程序中处理这个问题。

如果您希望您的序列是随机且唯一的 - 您可能需要查看 uniqid()功能。保证值是唯一的——至于长度,它肯定会超过 6 个字符。如需更多随机值,您可以结合使用 mt_rand()喜欢:

$long_value  = uniqid(mt_rand(),1); //long string, length > 30
$short_value = uniqid(); //short string, length < 20

关于php - 在 mysql 中创建一个更长的唯一自动增量列,第一行有 6 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20797416/

相关文章:

MySQL在从另一个表中选择时插入到具有自动增量的表中

mysql - 删除后数据库内存浪费

php - 如果在 WooCommerce Checkout 中选中自定义复选框,则删除运费

php - Stripe::无法向 Laravel 中没有事件卡的客户收费

php - Laravel 5.1 - BelongsTo 关系返回 null

mysql - 帮助加速此 MySQL 查询,该查询由于聚合函数而花费的时间过长

mysql - 数据库设计帮助-在线结帐项目

php - 在 php 中定义常量

php - 更新 MySQL 中的所有记录

sql - 如何在 Postgres 中创建等效于 SQL Server 的标识列