SQL触发器非常复杂,而且占用大量资源。针对基于MySQL“触发器”的解决方案,这里有一个更简单的解决方案。
-
在MySQL表列上创建一个唯一的索引,它将保存车辆牌照字符串。这将确保只输入唯一的值。
-
只需在Lua(或任何其他编程语言,如ASP、PHP、Java等)中生成标准字母数字随机字符串即可
-
使用生成的字符串执行INSERT语句,并使用错误捕获代码来解析失败(在唯一索引冲突的情况下)
-
如果插入失败,则生成一个新的随机字符串并重新插入。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();