我需要帮助在以下查询在php。我想创建像0001,0002这样的自动编号。我正在使用这个查询
$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,如果缺少任何创建的
谢谢
发布于 2013-09-25 15:12:52
使用此查询
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发布于 2013-09-25 15:14:41
去玩吧。编写触发器以在插入时更新下一个自动增量值。如果下一个自动增量值低于当前的下一个自动增量值,则在delete时写入触发器以将下一个自动增量值更新为已删除的id。
发布于 2013-09-25 15:15:11
https://stackoverflow.com/questions/18998340
复制相似问题