关于 id 自增的问题?

在artisan里面,我重复执行create()这个方法,第二次失败,因为设置了邮箱是唯一的,当我第三次执行create()成功时,发现数据库里的id变为3了。而且只有id为1和id为3的2条数据,这个怎么处理?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 8
yema

数据库id自增一般不会发生误差1的行为。是不是你删除了id为2的数据,才会导致第二条的数据的id为3。

5年前 评论

我记得好像是保存出错了,主键也会自增一的

5年前 评论
yema

我刚才百度了一下,数据库还真有这样的行为。如果你的id跳增长对你的业务产生了影响的话,你可以变向的去实现自增长,如果不影响业务逻辑,就没有必要纠结这个。

5年前 评论
yema

还有可以尝试一下事务,看下回滚能否取消Id的自增

5年前 评论

@kevin2011 如何让他保存出错id不自增呢?

5年前 评论

@yema 我的要求是:数据如果没有保存成功,不希望他自增,现在是新增报错了,但是自增了id, 感觉不要用到回滚机制。

5年前 评论

@Martin567 不用回滚的话网上好像还有一些别的处理方式,但感觉不太实用,话说必须要保证id的连续吗?没这必要吧?实在不行就对数据先进行严格的判断先,比如类型长度这些

5年前 评论

你可以使用事物,try catch捕获

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!