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

MySQL多行插入是否可以获取顺序的自动增量ID?

翁凯定
2023-03-14
问题内容

我认为这是对的,但我在网上找不到任何可确认的信息。我可以使用last_insert_id()获取为autoincrement字段生成的第一个ID,但是我可以假定下一条记录将具有顺序ID吗?还是其他用户可以获取一个ID,以使生成的ID不连续?

示例:将值(1,2),(3,4),(5,6),…,(10000,10001)插入mytable(asdf,qwer);

如果mytable有一个autoincrement列,并且如果两个用户同时运行此语句,一个用户将获取10000个顺序ID,另一个用户将获取下一个10000个顺序ID?几百个用户呢?

谢谢。


问题答案:

这取决于使用的存储引擎。

  • MyISAM 保证插入的行具有顺序ID,因为在插入过程中会保持表级锁定。
  • InnoDB :除非innodb_autoinc_lock_mode设置为 interleaved(2) ,否则插入的行将具有顺序ID。默认情况下,InnoDB consecutive从5.1和更低版本开始运行traditional

有关该innodb_autoinc_lock_mode选项的更多信息,请参见13.6.4.3。InnoDB中的AUTO_INCREMENT处理



 类似资料:
  • 问题内容: 我正在尝试获取类似mysql_insert_id()的mysql命令;它检索最后插入的行的auto_increment ID。我该怎么做才能在Java中获得它? 我的姓氏声明为INT。我不知道在rs.get中使用什么以及参数。 问题答案: 尝试使用别名

  • 问题内容: Eclipse支持增量编译。如果我保存一个源文件,那么它将编译修改后的文件。 在进行这样的增量编译后,是否还可以运行同一软件包的JUnit测试并在错误视图中显示失败。然后,我可以在同一视图中看到JUnit测试失败并编译错误,而无需执行其他操作。有没有可以做到的插件? 问题答案: 您必须查看以下插件: JUnit Max:不是免费的,由Kent Benk(TDD练习背后的人之一)开发;

  • 我正在使用java中的MySQL库执行一个查询。在我的数据库结构中,有一列名为(主键,非空且自动递增)。通常在每次插入查询中,我都将值设置为,在查询执行后,它会增加最后一个id,但在java中这样做会给我异常。 这就是代码: 如何使用自动增量ID执行查询?

  • 问题内容: 我正在使用php和mysql。我有一个表,其中id列设置为自动递增作为主键。我正在尝试添加另一个名为sort_order的列。插入行后,sort_order列应自动递增。然后,用户将能够更改sort_order值。但是mysql不允许多于一列的自动递增? 自动递增sort_order值的最佳方法是什么? 受欢迎的要求,更多的解释。 在管理区域中,用户将具有类别列表。用户可以使用java

  • 我有一个表,我试图插入新行,但有一个列不会自动递增自己。有没有办法编写一个INSERT命令,根据列中的最高值自动递增该列?

  • 我试图在表中插入一行,带有一个自动递增字段,但我遇到了错误。该表的结构为: id:自动增量 级别:文本 概念:文本 . 在w3c中,我了解到要将新记录插入表中,我们不必为“自动增量”列指定值(将自动添加唯一值)。 我做错了什么?