如何在MySQL中获取多个插入行的ID?

Goo*_*bot 36 mysql sql database insert normalization

我使用此命令将一些单词插入到两列表中:

INSERT IGNORE INTO terms (term) VALUES ('word1'), ('word2'), ('word3');
Run Code Online (Sandbox Code Playgroud)
  1. 如何获取插入每个单词的行的ID(主键).我的意思是在执行后返回类似"55,56,57"的值INSERT.MySQL有这样的回应吗?

  2. 专栏一词是UNIQUE.如果一个术语已经存在,MySQL将不会插入它.是否可以返回此复制的引用(即该术语存在的行的ID)?像"55,A响应12,56".

glg*_*lgl 35

  1. 你通过SELECT LAST_INSERT_ID();或通过你的框架/ MySQL库(用任何语言)调用得到它mysql_insert_id().

  2. 那不行.在那里你必须在插入后查询ID.

  • 这对于OP显示的多行插入不起作用. (6认同)
  • @Pitto然而你会从`LAST_INSERT_ID()`resp获得正确的值.`mysql_insert_id()`.前者知道当前会话中最后发生的事情,后者直接绑定到最后一个查询.如果在不同的连接中发生其他事情,那不会有害. (3认同)
  • 对 - 不在`INSERT IGNORE`中.但是在非'signORE`中,它会为您提供生成和插入的第一个值. (2认同)