mysql中自增auto_increment功能的相关设置及问题

时间:2024-01-16 09:34:13 

mysql中的自增auto_increment功能相信每位phper都用过,也都知道如何设置字段为自增字段,但并不是所有phper都知道auto_increment的起始值和递增量是如何设置的!本文就为大家分享一下mysql字段自增功能的具体查看及设置方法。

涉及知识介绍
mysql服务器维护着2种mysql的系统参数(系统变量):全局变量(global variables)和会话变量(session variables)。它们的含义与区别如其各占的名称所示,session variables是在session级别的,对其的变更只会影响到本session;global variables是系统级别的,对其的变更会影响所有新session(变更时已经存在session不受影响)至下次mysql server重启动。注意它的变更影响不能跨重启,要想再mysql server重启时也使用新的值,那么就只有通过在命令行指定变量选项或者更改选项文件来指定,而通过SET变更是达不到跨重启的。
每一个系统变量都有一个默认值,这个默认值是在编译mysql系统的时候确定的。对系统变量的指定,一般可以在server启动的时候在命令行指定选项或者通过选项文件来指定,当然,大部分的系统变量,可以在系统的运行时,通过set命令指定其值。

首先需要介绍一下查看mysql中全局变量的方法


show variables like '%xxx%'; <==> show session variables like '%xxx%'; //session会话变量
show global variables like '%xxx%'; //全局变量


例如查看与auto_increment相关的变量方法如下:


show variables like '%auto_increment%';



一般情况结果为

variables_name                 value
auto_increment_increment                1 
auto_increment_offset                1


第一个变量名 auto_increment_increment 就是指 字段一次递增多少;
第二个变量名 auto_increment_offset 指 自增字段的起始值。
比如,有个表test,字段id为主键,自增;
如果auto_increment_offset=1 , 并且auto_increment_increment=1,那么向表中插入第一条数据时,则该条数据的id=1,第二条id=2,第三条id=3以此类推……
如果auto_increment_offset=2 , 并且auto_increment_increment=10,那么向表中插入第一条数据时,则该条数据的id=2,第二条id=12,第三条id=22以此类推……
注意:如果auto_increment_offset的值大于auto_increment_increment的值,则auto_increment_offset的值被忽略。

了解如何查看及其含义以后,剩下的就是如何修改这些变量的值了,修改也非常简单,语句格式如下:
set auto_increment_increment=10
就这么简单就把变量auto_increment_increment的值设置成了10
—————————————————————————————————————
补充一个看似简单但又不是很简单的问题
问:如果有一张表,里面有个字段为id的自增主键,当已经向表里面插入了10条数据之后,删除了id为8,9,10的数据,再把mysql重启,之后再插入一条数据,那么这条数据的id值应该是多少,是8,还是11?
答:如果表的类型为MyISAM,那么是11。如果表的类型为InnoDB,则id为8。
这是因为两种类型的存储引擎所存储的最大ID记录的方式不同,MyISAM表将最大的ID记录到了数据文件里,重启mysql自增主键的最大ID值也不会丢失;
而InnoDB则是把最大的ID值记录到了内存中,所以重启mysql或者对表进行了OPTIMIZE操作后,最大ID值将会丢失。

标签:自增,auto,increment
0
投稿

猜你喜欢

  • Oracle 实现类似SQL Server中自增字段的一个办法

    2009-08-02 07:51:00
  • 理解Python数据离散化手写if-elif语句与pandas中cut()方法实现

    2023-02-24 10:33:33
  • Python多线程threading join和守护线程setDeamon原理详解

    2022-05-25 18:09:39
  • python 顺时针打印矩阵的超简洁代码

    2023-03-25 14:03:52
  • MySQL数据库监控软件lepus使用问题以及解决办法

    2024-01-25 14:59:37
  • SQL Server中row_number函数用法入门介绍

    2024-01-26 22:45:04
  • Python绘图Matplotlib之坐标轴及刻度总结

    2023-10-01 15:56:39
  • 教你使用TensorFlow2识别验证码

    2022-06-26 19:24:38
  • 关注各网站的布局调整

    2008-09-23 18:14:00
  • 通过lms.samples熟悉lms微服务框架的使用详解

    2023-06-27 04:15:13
  • python实现大文本文件分割成多个小文件

    2022-02-18 12:36:06
  • 设置iframe的document.designMode后仅Firefox中其body.innerHTML为br

    2024-05-02 16:17:31
  • opencv形态学中的孔洞填充详细图解

    2021-08-14 00:44:10
  • python数组中的 k-diff 数对例题解析

    2022-03-30 18:21:47
  • Oracle字符集修改查看方法

    2024-01-17 05:45:13
  • Python抽象类的新写法

    2022-12-04 13:39:38
  • 《写给大家看的设计书》阅读笔记之色彩

    2009-07-30 12:45:00
  • 简单的两种Extjs formpanel加载数据的方式

    2023-07-02 05:19:24
  • Python 转换文本编码实现解析

    2022-07-15 15:58:49
  • python3实现域名查询和whois查询功能

    2023-09-19 19:35:12
  • asp之家 网络编程 m.aspxhome.com