首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php从我的sql数据库自动生成编号

php从我的sql数据库自动生成编号
EN

Stack Overflow用户
提问于 2013-09-25 15:03:51
回答 3查看 2.1K关注 0票数 0

我需要帮助在以下查询在php。我想创建像0001,0002这样的自动编号。我正在使用这个查询

代码语言:javascript
复制
$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,如果缺少任何创建的

谢谢

EN

回答 3

Stack Overflow用户

发布于 2013-09-25 15:12:52

使用此查询

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2013-09-25 15:14:41

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

票数 0
EN

Stack Overflow用户

发布于 2013-09-25 15:15:11

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

你可以阅读这个参考资料..

Make auto increment fill previously deleted number

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18998340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档