如何进行多插入并获取id

时间:2010-05-21 14:48:32

标签: php sql mysql yii

我想在表格中插入一些数据

(id PK autoincrement, val)

使用多插入

INSERT INTO tab (val) VALUES (1), (2), (3) 

是否可以获取最后插入的ID表?

我问因为我不确定是否所有人都会这样:(n,n + 1,n + 2)。

我使用mysql inodb。

2 个答案:

答案 0 :(得分:2)

来自mysql docs

  

如果使用a插入多行   单个INSERT语句,   LAST_INSERT_ID()返回值   为第一个插入的行生成   只要。这样做的原因是   它可以很容易地重现   针对某些人的INSERT语句   其他服务器。

答案 1 :(得分:1)

Here's有人在mysql论坛上提出同样的问题,但没有给出真正权威的答案。他们落在'为了安全,先把桌子锁上。然后,您可以将ID计入顺序。'

我的建议是:

如果您要插入许多行并且不介意阻止其他线程,请锁定表格,执行插入操作,然后解锁。由于表被锁定,您可以指望插入的ID是顺序的(或者无论您的自动增量设置是什么)。

如果您正在进行少量插入操作或者不想阻止其他线程,请一次执行一次,并在每次执行后调用last_insert_id()。