0

我在 php.ini 中的以下查询中需要帮助。我想创建像 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 如果缺少任何那个创建

谢谢

4

3 回答 3

0

used this query

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-25T07:12:52.443 回答
0

去花哨。编写触发器以更新插入时的下一个自动增量值。如果它低于当前的下一个自动增量,则在删除时写入触发器以将下一个自动增量值更新为已删除的 id。

于 2013-09-25T07:14:40.873 回答
0

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

您可以阅读此参考资料..

使自动增量填充以前删除的号码

如何填补自增字段的“漏洞”?

于 2013-09-25T07:15:11.420 回答