[MySQL源码] Innodb如何处理auto_inc值

  1. 云栖社区>
  2. 博客>
  3. 正文

[MySQL源码] Innodb如何处理auto_inc值

zhaiwx_yinfeng 2016-05-10 13:51:42 浏览1373
展开阅读全文

——————————————————–

ha_innobase::write_row是向innodb写入记录的函数,进入函数时自增列的值还没被设置(如何是NULL的话),会调用handler::update_auto_increment来获取并更新自增列,然后再调用row_insert_for_mysql来实际插入记录。我们的精力主要集中在update_auto_increment及其调用的函数上。

先了解下handler的几个跟自增列相关的成员变量(根据注释及gdb推测):

 a. ulonglong next_insert_id;  

下一个插入自增列的值,当一次插入多行记录时(例如,insert select 操作),第一个没有指定自增列值的记录会从get_auto_increment函数获取的值并赋值给next_insert_id

网友评论

登录后评论
0/500
评论
zhaiwx_yinfeng
+ 关注