php自动从我的sql db生成数字

时间:2013-09-25 07:03:51

标签: php mysql

我在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如果错过任何该创建

感谢

3 个答案:

答案 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)

我认为您正在尝试填充已删除的自动增量主要编号

的空格

您可以阅读此参考文献..

Make auto increment fill previously deleted number

How to fill in the “holes” in auto-incremenet fields?