Mysql - 在实际插入时获取自动增量ID
有谁知道是否可以获取 mysql 表中字段的自动增量 id 并在同一个插入中使用它?
例如,
假设这里的新 id 为 2,则评估语句将如下所示
“插入表(field1)值('random-2')”
我知道我可以在代码中返回它并运行另一个插入,但我想知道在插入过程中是否有更快的方法来“计算”这个?
1 我认为我的想法是“插入表(字段1)值(‘随机’+(从表中选择最大(id))+ 1)”,
但我担心同时发生多个插入可能出现的问题。
谢谢
Does anyone know if it is possible to get the auto increment id of a field in a mysql table and use it in the same insert?
e.g
assuming the new id here would be 2, an evaluated statement would look as follows
"insert into table (field1) values( 'random-2')"
I know it's possible for me to return this in the code and run another insert, but I wondered if there was a quicker way to 'compute' this during the insert?
1 thought I had was "insert into table (field1) values( 'random' + (select max(id) FROM table) + 1)"
but I'm worried about possible issues with multiple inserts occurring at the same time.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是不可能的。之后您必须更新该条目。
It's not possible. You're gonna have to update the entry afterwards.
这只是问题的一部分 - 插入 ID 应该是唯一的 - 不连续。
如果您想在应用程序的单个调用中完成此操作,请使用存储过程来封装插入+更新或使用触发器在插入时触发更新。或者使用序列生成器而不是自动增量。
That's only part of the problem - insert ids are only suposed to be unique - not contiguous.
If you want to do it in a single call from the application then use a stored procedure to encapsulate the insert+update or use a trigger to fire an update on insert. Or use a sequence generator instead of an autoincrement.