我有一个带有用于插入多行的语法的 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
我有一个带有用于插入多行的语法的 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
无法检索多个生成的 auto-inc 变量。调用 LAST_INSERT_ID() 会返回最后一个 INSERT 生成的第一个值。
要获取所有值,请一次插入一行,并在每一行之后调用 LAST_INSERT_ID()。这会导致更多开销,但这是唯一的解决方法。
如果您正在执行INSERT...SELECT
or LOAD DATA INFILE
,这尤其是一个问题,批量生成许多新的 id 值。
您可以在循环中插入记录,并在插入每条记录时通过调用 last_insert_id() 将自动增量 id 存储在数组中。因此,您可以在需要的地方使用插入的 id 数组。