mysql 自增_mysql自增
表结构
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自增相关推荐
- mysql insert 自增_MySQL自增列插入0值的解决方案
在将数据库从MSSQL迁移到MySQL的过程中,基于业务逻辑的要求,需要在MySQL的自增列插入0值.在MSSQL中是这样完成的: string sql;sql = " set identi ...
- mysql qt自增_mysql自增设置
MySQL设置自增字段的相关语句: alter table album change ALBUM_ID ALBUM_ID bigint not null auto_increment; alter t ...
- mysql的增_MySQL之增_insert-replace
MySQL增删改查之增insert.replace 一.INSERT语句 带有values子句的insert语句,用于数据的增加 语法: INSERT [INTO] tbl_name[(col_nam ...
- php mysql 字段自增_MySQL自增字段取值的详细介绍(附代码)
本篇文章给大家带来的内容是关于MySQL自增字段取值的详细介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1 前言 本文来自回答思否网友的一个问题,这个网友新建了一张表 ...
- mysql 主键 自增_MySQL自增主键详解
一.自增值保存在哪儿? 不同的引擎对于自增值的保存策略不同 1.MyISAM引擎的自增值保存在数据文件中 2.InnoDB引擎的自增值,在MySQL5.7及之前的版本,自增值保存在内存里,并没有持久化 ...
- mysql批量设置自增_mysql自增id怎么批量插入数据
使用mysql数据库--增 插入一条数据 首先,还是先解释一下如何使用数据库,按照上面的方法就可以连接数据库了.这里要解释两件事情. 1.执行sql语句返回的reCount是什么? 这个recount ...
- mysql serial 类型_Mysql自增类型serial
最近看前辈们的代码,发现了一个没有接触过的类型:serial. 下面是关于serial的官方介绍: SERIAL is an alias for BIGINT UNSIGNED NOT NULL AU ...
- mysql 原子自增_mysql自增锁_33
自增锁也会导致死锁 自增锁 一个表一个自增列 auto_increment pk select max(auto_inc_col)from t for update 在事务提交前释放 其他所在事务提交 ...
- mysql 主键自增_mysql自增主键在大量删除后如何重新设置避免断层
一般在设计数据表结构的时候,我们经常使用int来作为表的主键,并且让他自动增长,那么这样就会导致id出现中间断层的问题,那么如何解决呢,请继续往下看. 假设,我们有一张表为aa,我们来查找id,代码如 ...
最新文章
- 超微服务器开机启动项目怎么设置,超微服务器启动项设置
- Android 让图片等比例缩放的三种方法
- WinForm 2.0 textBox作为参数的查询,显示在DataGridView
- windows安装程序创建_如何在Windows上创建已安装程序的列表
- admin select 2 异步_解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
- 使用NPM和Nodejs编写编译工具
- nx零件库插件_3DSource企业自定义零件库插件
- 【无线安全实践入门】破解WiFi密码的多个方法
- logstash的mutate过滤器的使用
- matlab 二维插值 验证,科学网-利用MATLAB对非矩形域实现二维插值-张乐乐的博文...
- F - Fairy, the treacherous mailman
- 机器学习中是如何处理误差的
- unity木船模型,古代帆船模型,古船
- Html及CSS实现旋转效果
- 马上2021年了线性表你还不知道原理?给老王整的明明白白
- 汽车零部件物料配送防错漏视觉检测工作站
- C# 简洁代码实现面向切面编程(AOP)
- Linux九阴真经之九阴白骨爪残卷5(ansible用法二之Playbook和YAML语法)
- pdf转png图片乱码问题(字体缺失,centos安装字体)
- Ubuntu18.04下Azure Kinect DK 调试(SDK源码+ROS)无比详细踩坑教程
热门文章
- 移动端视网膜(Retina)屏幕下1px边框线的解决方法
- 计算机的网络硬件和软件有哪些,软件设施包括哪些 硬件设施和软件设施的区别?...
- Java多线程:线程间通信方式
- php gps定位功能,选择GPS定位器你需要了解这些...
- SystemVerilog LRM 学习笔记 -- SV Scheduler仿真调度
- P02014018李俊豪信息论作业
- python 涨停统计_Python tushare股票大数据分析与报告生成(优化版2)
- 广东计算机电子学校,广州市电子信息学校官网
- 自然语言处理学习笔记2:分词工具及分词原理
- Excel文件导出list对象