2014-05-14 43 views
0

一个单一查询插入多行:如何获取最新的自动递增ID的数组?

$My query = "INSERT INTO exp_channel_titles(channel_id,author_id,ip_address) VALUES(11,1,'203.109.119.2'),(11,1,'203.109.119.2'),(11,1,'203.109.119.2')"; 

我想要什么:

汽车的阵列递增ID。

什么我使用SELECT LAST_INSERT_ID()越来越:

我只得到一个单一的id.What我应该这样做,我得到的所有最后插入字段的自动递增值的数组。

P.S:我无法触发多个插入查询。

回答

1

这会得到由ID排序的最后X个记录。如果您的ID是自动增量的,那么这些将是最新插入的值。

SELECT * FROM exp_channel_titles 
ORDER BY id DESC 
LIMIT X 
2

如果您在最新版本的MySQL上使用InnoDB,则可以使用LAST_INSERT_ID()和ROW_COUNT()获取ID列表。

只要innodb_autoinc_lock_mode设置为0(传统)或1(连续),InnoDB在进行批量插入时保证AUTO INCREMENT的序列号。因此,您可以从LAST_INSERT_ID()获取第一个ID,最后通过添加ROW_COUNT() - 1获得。

+0

+1对于innodb_autoinc_lock_mode,这是一个新的记忆 –