私信  •  关注

Aquaholic

Aquaholic 最近创建的主题
Aquaholic 最近回复了
3 年前
回复了 Aquaholic 创建的主题 » 在MySQL中生成唯一字符串的最简单方法是什么?[重复]

SQL触发器非常复杂,而且占用大量资源。针对基于MySQL“触发器”的解决方案,这里有一个更简单的解决方案。

  1. 在MySQL表列上创建一个唯一的索引,它将保存车辆牌照字符串。这将确保只输入唯一的值。
  2. 只需在Lua(或任何其他编程语言,如ASP、PHP、Java等)中生成标准字母数字随机字符串即可
  3. 使用生成的字符串执行INSERT语句,并使用错误捕获代码来解析失败(在唯一索引冲突的情况下)
  4. 如果插入失败,则生成一个新的随机字符串并重新插入。8个字符的长度本身很难重复,一旦在表中找到,生成另一个字符几乎不可能是另一个重复。

这将在DB服务器上更轻、更高效。

下面是PHP中的一个示例(伪)代码:

function refercode()
{
    $string = '';
    $characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $max = strlen($characters) - 1;
    for ($i = 0; $i < 8; $i++) {
        $string .= $characters[mt_rand(0, $max)];
    }
    $refer = "select * from vehicles where refer_code = '".$string."' ";
    $coderefertest = mysqli_query($con,$refer);

    if(mysqli_num_rows($coderefertest)>0)
    {
        return refercode();
    }
    else
    {
        return $string;
    }
}
$refer_by = refercode();