我想在表格中插入一些数据
(id PK autoincrement, val)
使用多插入
INSERT INTO tab (val) VALUES (1), (2), (3)
是否可以获取最后插入的ID表?
我问因为我不确定是否所有人都会这样:(n,n + 1,n + 2)。
我使用mysql inodb。
答案 0 :(得分:2)
来自mysql docs:
如果使用a插入多行 单个INSERT语句, LAST_INSERT_ID()返回值 为第一个插入的行生成 只要。这样做的原因是 它可以很容易地重现 针对某些人的INSERT语句 其他服务器。
答案 1 :(得分:1)
Here's有人在mysql论坛上提出同样的问题,但没有给出真正权威的答案。他们落在'为了安全,先把桌子锁上。然后,您可以将ID计入顺序。'
我的建议是:
如果您要插入许多行并且不介意阻止其他线程,请锁定表格,执行插入操作,然后解锁。由于表被锁定,您可以指望插入的ID是顺序的(或者无论您的自动增量设置是什么)。
如果您正在进行少量插入操作或者不想阻止其他线程,请一次执行一次,并在每次执行后调用last_insert_id()。