假设数据库test表有3个字段
id(自增)
name
order
现在要插入一条数据 让order 和 id 的值相等
我是 先插入一条数据
再获取到插入的id
然后 update 将order设成id值
有没有办法插入的时候就让id 和order相等
还是先 select max(id) from test
再执行插入?
这种情况一定要两条语句才能搞定吗?
假设数据库test表有3个字段
id(自增)
name
order
现在要插入一条数据 让order 和 id 的值相等
我是 先插入一条数据
再获取到插入的id
然后 update 将order设成id值
有没有办法插入的时候就让id 和order相等
还是先 select max(id) from test
再执行插入?
这种情况一定要两条语句才能搞定吗?
楼上许多答案有考虑不周全的地方。
一个表无法设置两个自增字段的。
无法在insert的过程中获得当前生成的id, 只能通过两条语句去做吧。 两次操作有什么问题吗?
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
你的这个设计不合理,看得出来你这个order是用来作为排序字段的,并且希望有人工调整的余地,而不是简单的设计成按照主键排序,那这样的话你在select的时候直接用
order by `order`, `id`
就解决了这个问题,这样的话order字段只要有一个默认值就可以了,例如10000,优先用此字段排序,然后用id排序当然还有记得加索引
题外话,不要用mysql的关键字作为字段名,也就是order这类的名字,建议改成priority之类的名字!