1

我有一个带有用于插入多行的语法的 INSERT:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

使用 MySQL 函数 LAST_INSERT_ID() 可以检索生成的 AUTO_INCREMENT 列的主键,但是如何检索行 (1,2,3)、(4,5,6) AND (7,8,9) 的主键插入一个独特的 SQL INSERT 指令?

编程语言为 PHP 5.4.13 和 MySQL Server 5.6.10

4

2 回答 2

2

无法检索多个生成的 auto-inc 变量。调用 LAST_INSERT_ID() 会返回最后一个 INSERT 生成的第一个值。

要获取所有值,请一次插入一行,并在每一行之后调用 LAST_INSERT_ID()。这会导致更多开销,但这是唯一的解决方法。

如果您正在执行INSERT...SELECTor LOAD DATA INFILE,这尤其是一个问题,批量生成许多新的 id 值。

另见MySQL LAST_INSERT_ID() 用于多条记录 INSERT 语句

于 2013-03-28T19:55:18.317 回答
0

您可以在循环中插入记录,并在插入每条记录时通过调用 last_insert_id() 将自动增量 id 存储在数组中。因此,您可以在需要的地方使用插入的 id 数组。

于 2013-06-07T04:28:57.747 回答