关于 id 自增的问题?

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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 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年前 评论

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