表结构

CREATE TABLE `salary` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`user_id` int(11) NOT NULL DEFAULT '0',

`salary` decimal(10,2) NOT NULL DEFAULT '0',

PRIMARY KEY (`id`)

)

auto_increment

# 查看当前表的auto_increment值

mysql> select auto_increment from information_schema.TABLES WHERE TABLE_SCHEMA='db_name' and TABLE_NAME='table_name';

# 修改当前auto_increment值

mysql> alter table db_name.table_name auto_increment=20

对auto_increment的理解

如果插入数据库时不指定auto_increment字段的值,那么该字段为auto_increment当前的值,然后 auto_increment自增1

如果插入数据库时指定了auto_increment字段的值,并且指定的值小于等于当前auto_increment的值(指定的值无重复),插入成功,但是auto_increment不会自增

如果插入数据库时指定了auto_increment字段的值,并且指定的值大于当前auto_increment的值,插入成功,auto_increment变为指定值加1

当前最大id大于auto_increment的值,插入时不指定auto_increment字段值,当自增id等于最大id时,会插入失败,然后auto_increment自增1

last_insert_id()

不带参数时,该函数返回最近一个insert语句生成的第一个自动增长列的值,值为bigint unsigned类型。

带参数时,返回一个unsigned int。

# 查看自增值

mysql> select last_insert_id();

-> 20

last_insert_id是几月每个服务连接的,即一个服务的insert语句不会影响到另一个服务的last_insert_id的值,虽然他们共享auto_increment。如下例

# 连接1

mysql server1> insert into salary (user_id,salary) value(4,32);

mysql server1> select last_insert_id();

-> 5;

mysql server1> select auto_increment from information_schema.TABLES WHERE TABLE_SCHEMA='test' and TABLE_NAME='salary';

-> 6;

# 连接2

mysql server2> select last_insert_id();

-> 0;

mysql server2> select auto_increment from information_schema.TABLES WHERE TABLE_SCHEMA='test' and TABLE_NAME='salary';

-> 6;

当插入的值中包含了自增列,那么last_insert_id不会更新,但是会更新auto_increment的值

mysql> select last_insert_id();

-> 5

mysql> insert into salary (id,user_id,salary) value(8,4,32);

mysql> select last_insert_id();

-> 5

mysql> select auto_increment from information_schema.TABLES WHERE TABLE_SCHEMA='test' and TABLE_NAME='salary';

-> 9

一次插入多条数据,last_insert_id返回第一条成功插入后生成的id

mysql> select auto_increment from information_schema.TABLES WHERE TABLE_SCHEMA='test' and TABLE_NAME='salary';

-> 9

mysql> insert into salary (user_id,salary) values (4,32),(5,44);

mysql> select last_insert_id();

-> 9

mysql> select auto_increment from information_schema.TABLES WHERE TABLE_SCHEMA='test' and TABLE_NAME='salary';

-> 11

last_insert_id(expr),指定一个表达式参数,该表达式的返回值会当做下一次调用last_insert_id的返回值。

mysql> update salary set id=last_insert_id(id+3) where id=5;

mysql> select last_insert_id();

-> 8

参考链接

mysql 自增_mysql自增相关推荐

  1. mysql insert 自增_MySQL自增列插入0值的解决方案

    在将数据库从MSSQL迁移到MySQL的过程中,基于业务逻辑的要求,需要在MySQL的自增列插入0值.在MSSQL中是这样完成的: string sql;sql = " set identi ...

  2. mysql qt自增_mysql自增设置

    MySQL设置自增字段的相关语句: alter table album change ALBUM_ID ALBUM_ID bigint not null auto_increment; alter t ...

  3. mysql的增_MySQL之增_insert-replace

    MySQL增删改查之增insert.replace 一.INSERT语句 带有values子句的insert语句,用于数据的增加 语法: INSERT [INTO] tbl_name[(col_nam ...

  4. php mysql 字段自增_MySQL自增字段取值的详细介绍(附代码)

    本篇文章给大家带来的内容是关于MySQL自增字段取值的详细介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1 前言 本文来自回答思否网友的一个问题,这个网友新建了一张表 ...

  5. mysql 主键 自增_MySQL自增主键详解

    一.自增值保存在哪儿? 不同的引擎对于自增值的保存策略不同 1.MyISAM引擎的自增值保存在数据文件中 2.InnoDB引擎的自增值,在MySQL5.7及之前的版本,自增值保存在内存里,并没有持久化 ...

  6. mysql批量设置自增_mysql自增id怎么批量插入数据

    使用mysql数据库--增 插入一条数据 首先,还是先解释一下如何使用数据库,按照上面的方法就可以连接数据库了.这里要解释两件事情. 1.执行sql语句返回的reCount是什么? 这个recount ...

  7. mysql serial 类型_Mysql自增类型serial

    最近看前辈们的代码,发现了一个没有接触过的类型:serial. 下面是关于serial的官方介绍: SERIAL is an alias for BIGINT UNSIGNED NOT NULL AU ...

  8. mysql 原子自增_mysql自增锁_33

    自增锁也会导致死锁 自增锁 一个表一个自增列 auto_increment pk select max(auto_inc_col)from t for update 在事务提交前释放 其他所在事务提交 ...

  9. mysql 主键自增_mysql自增主键在大量删除后如何重新设置避免断层

    一般在设计数据表结构的时候,我们经常使用int来作为表的主键,并且让他自动增长,那么这样就会导致id出现中间断层的问题,那么如何解决呢,请继续往下看. 假设,我们有一张表为aa,我们来查找id,代码如 ...

最新文章

  1. 超微服务器开机启动项目怎么设置,超微服务器启动项设置
  2. Android 让图片等比例缩放的三种方法
  3. WinForm 2.0 textBox作为参数的查询,显示在DataGridView
  4. windows安装程序创建_如何在Windows上创建已安装程序的列表
  5. admin select 2 异步_解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
  6. 使用NPM和Nodejs编写编译工具
  7. nx零件库插件_3DSource企业自定义零件库插件
  8. 【无线安全实践入门】破解WiFi密码的多个方法
  9. logstash的mutate过滤器的使用
  10. matlab 二维插值 验证,科学网-利用MATLAB对非矩形域实现二维插值-张乐乐的博文...
  11. F - Fairy, the treacherous mailman
  12. 机器学习中是如何处理误差的
  13. unity木船模型,古代帆船模型,古船
  14. Html及CSS实现旋转效果
  15. 马上2021年了线性表你还不知道原理?给老王整的明明白白
  16. 汽车零部件物料配送防错漏视觉检测工作站
  17. C# 简洁代码实现面向切面编程(AOP)
  18. Linux九阴真经之九阴白骨爪残卷5(ansible用法二之Playbook和YAML语法)
  19. pdf转png图片乱码问题(字体缺失,centos安装字体)
  20. Ubuntu18.04下Azure Kinect DK 调试(SDK源码+ROS)无比详细踩坑教程

热门文章

  1. 移动端视网膜(Retina)屏幕下1px边框线的解决方法
  2. 计算机的网络硬件和软件有哪些,软件设施包括哪些 硬件设施和软件设施的区别?...
  3. Java多线程:线程间通信方式
  4. php gps定位功能,选择GPS定位器你需要了解这些...
  5. SystemVerilog LRM 学习笔记 -- SV Scheduler仿真调度
  6. P02014018李俊豪信息论作业
  7. python 涨停统计_Python tushare股票大数据分析与报告生成(优化版2)
  8. 广东计算机电子学校,广州市电子信息学校官网
  9. 自然语言处理学习笔记2:分词工具及分词原理
  10. Excel文件导出list对象