我在php中的以下查询中需要帮助。我想创建像0001,000这样的自动编号。 我正在使用此查询
$query = "SELECT MAX(cast(registration_code as decimal)) id FROM accounts ";
if($result = mysql_query($query))
{
$row = mysql_fetch_assoc($result);
$count = $row['id'];
$count = $count+1;
$code_no = str_pad($count, 4, "0", STR_PAD_LEFT);
}
它正常工作,但问题是,当我删除任何数字,如0001,0002,0003和我删除0002这创建0004我希望这将创建删除的数字我的意思是0001到0003如果错过任何该创建
感谢
答案 0 :(得分:0)
使用此查询
SELECT ( accounts1.registration_code + 1) as gap_starts_at,
(SELECT MIN( accounts3.registration_code) -1 FROM arrc_vouchers accounts3 WHERE accounts3.registration_code > accounts1.registration_code) as gap_ends_at
FROM arrc_vouchers accounts1
WHERE NOT EXISTS (SELECT accounts2.registration_code FROM arrc_vouchers accounts2 WHERE accounts2.registration_code = accounts1.registration_code + 1)
HAVING gap_ends_at IS NOT NULL
答案 1 :(得分:0)
去看看。写入触发器以更新插入时的下一个自动增量值。在删除时写入触发器,如果它低于当前的下一个自动增量,则将下一个自动增量值更新为已删除的ID。
答案 2 :(得分:0)