当前位置: 首页 > 面试题库 >

MySQL LAST_INSERT_ID()与多个记录INSERT语句一起使用

柏高丽
2023-03-14
问题内容

如果我通过执行单个记录插入的循环插入多个记录,则按预期返回的最后一个插入id是最后一个。但是,如果我执行多条记录插入语句:

INSERT INTO people (name,age)
VALUES ('William',25), ('Bart',15), ('Mary',12);

假设上面的三个是插入表中的第一条记录。在插入语句之后,我希望最后一个插入ID返回3,但返回1。有关语句的第一个插入ID。

所以有人可以确认这是否是在LAST_INSERT_ID()多条记录INSERT语句的上下文中的正常行为。因此,我可以将代码作为基础。


问题答案:

是。这种行为last_insert_id()是在MySQL的文档记录:

重要

如果您使用一条INSERT语句插入多行,则仅LAST_INSERT_ID()返回为第一行插入而生成的值。这样做的原因是使INSERT针对其他服务器轻松重现相同的语句成为可能。



 类似资料:
  • 问题内容: 这合法吗? 问题答案: 对于它的价值,并取决于是否将相同的数据插入到相同的表中,最好用一个插入插入多个值, 例如

  • 如本文所示,此功能在MySQL中可用,根据Sybase文档,它也应该得到支持,但是Sybase没有提供工作示例,因此您必须解释以下内容: 语法1使用指定的表达式列值插入单行或多行。如果指定,多行由附加括号分隔 因此,我将“附加括号”解释为期望下面的代码能够工作 然而,它错误地 我使用的是Sybase ASE 15,在INSERT语句的支持页面上看不到任何关于插入多行的引用 这个功能在赛贝斯可用吗?

  • 大家好,我有一个多个insert语句的问题,我需要插入许多记录。我用这种方式编写,但记录没有插入到“userbill”表中。帮帮我?? ..代码如下: logcat: 09-05 13:12:48.610:D/DalvikVM(7982):GC_FOR_ALLOC释放314K,10%释放5030K/5568K,暂停17ms,共18ms 09-05 13:12:48.610:I/dalvikvm-h

  • 问题内容: 在下图中,“ DodgyOldTable”和“MainTable”之间存在1:1的关系。表“选项”包含在“选项描述”字段中具有“选项Val1”,“选项Val2”和“选项Val3”的记录。我需要从DodgyOldTable中选择一个插入MainTable_Option中。像这样的东西: 如果可能的话,我想避免使用几个不同的select语句来执行插入操作。 替代文字http://www.f

  • 问题内容: 我已经看过类似于此问题的各种问答,但是还没有找到解决方案。 我所拥有的一个枚举代表了观看电视指南的不同方式… 在NDroid 类中 …当用户更改视图时,事件处理程序会收到0-2的值,而我想做这样的事情… 在Android 事件处理程序中 我已经习惯了C#枚举和select / case语句,这些语句允许类似上面的内容,而且我知道Java的处理方式有所不同,但是我根本无法理解需要做什么。

  • 问题内容: 代码: 关于上面的代码段,else ifs在技术上是多余的,根本不改变行为。但是,我倾向于将它们放在此处以强调条件是排他性的。你觉得呢?你有没有什么想法?不必要或更清晰? 问题答案: 有人会说倍数回报是这里的问题。但这不是我的意思。 以我的观点,if / else if确实很重要,因为即使在您的情况下您返回了一些值,删除else仍然意味着您将不会放置它们,并且如果回报不在这里。 另外,