搜索
php - Mysql 如何插入和自增id相同的值?
大家讲道理
大家讲道理 2017-04-10 16:24:53
[PHP讨论组]

假设数据库test表有3个字段

id(自增)
name
order

现在要插入一条数据 让order 和 id 的值相等
我是 先插入一条数据
再获取到插入的id
然后 update 将order设成id值
有没有办法插入的时候就让id 和order相等

还是先 select max(id) from test
再执行插入?

这种情况一定要两条语句才能搞定吗?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(6)
阿神

你的这个设计不合理,看得出来你这个order是用来作为排序字段的,并且希望有人工调整的余地,而不是简单的设计成按照主键排序,那这样的话你在select的时候直接用order by `order`, `id` 就解决了这个问题,这样的话order字段只要有一个默认值就可以了,例如10000,优先用此字段排序,然后用id排序

当然还有记得加索引


题外话,不要用mysql的关键字作为字段名,也就是order这类的名字,建议改成priority之类的名字!

PHP中文网

可以用Mysql的触发器实现

也可以用事务去处理

黄舟

获取最后一条插入的id的话,SET @lastid = LAST_INSERT_ID(); 是不是要比select max(id) from test要好?

PHP中文网

想了一个很猥琐的办法就是把 order 也设置自增。

巴扎黑

一个值为什么要用两个字段?

迷茫

楼上许多答案有考虑不周全的地方。

一个表无法设置两个自增字段的。

无法在insert的过程中获得当前生成的id, 只能通过两条语句去做吧。 两次操作有什么问题吗?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号