我有几个关于MySQL虚张声势插入忽略语句的问题,包括InnoDB和MyISAM.An示例:
INSERT IGNORE INTO table(`reference`) VALUES ('1','2','3')引用也是唯一的键。
致以亲切的问候,
发布于 2016-08-18 17:35:23
这里发生了很多事情..。
... VALUES (1), (2), (3)。INSERT IGNOREs (如果使用InnoDB)。IGNORE,任何重复的键都不会中止插入。innodb_autoinc_lock_mode控制AUTO_INCREMENT在多行INSERT期间发生的情况。需要知道它的价值才能完全回答这个问题。默认情况下,无论有多少AUTO_INCREMENT id值是重复的,reference值都会增加3。这导致了ids的意外“燃烧”。(并消除了您关于“第一个ID”是什么的问题。)发布于 2016-08-18 12:08:40
一个单一的MySQL查询,无论是SELECT、INSERT还是其他任何东西,都应该是原子的,因为语句将完全成功并完成,或者失败并回滚。这并不意味着您的INSERT将在隔离状态下运行,也不意味着它将完全兼容ACID,但它应该是原子的。
批处理插入返回该批处理插入的第一个ID的值。
我不知道您使用的是什么工具或接口,但是文档不这么说:
如果你用插入..。语句具有多个值列表或插入.选择时,该语句将以以下格式返回一个信息字符串: 记录: 100重复:0警告:0
例如,在JDBC中,API返回受INSERT操作影响的记录数,而不是插入的第一行的ID。
https://stackoverflow.com/questions/39017523
复制相似问题