精华内容
下载资源
问答
  • 14.5.5 AUTO_INCREMENT Handling in InnoDB 在InnoDB AUTO_INCREMENT处理.pdf
  • 查看与设置: show variables like '%auto_inc%'; show session variables like '%auto_inc%'; -- //session会话变量 show global variables like '%auto_inc%'; -- //全局变量 SET @auto_increment_in...

     

    查看与设置: 
    
    show variables like '%auto_inc%';           
    show session variables like '%auto_inc%';   --  //session会话变量 
    show global variables like '%auto_inc%';   --  //全局变量 
      SET @auto_increment_increment = 3 ;
      SET session auto_invrement_increment=2; 
      SET global auto_increment_increment=1;
    
     
    
      第一种和第二种是一样的效果,第三个是修改全局的变量;

    mysql中有自增长字段,在做数据库的主主同步时需要设置自增长的两个相关配置:auto_increment_offset和auto_increment_increment。

    • auto_increment_offset表示自增长字段从那个数开始,他的取值范围是1 .. 65535
    • auto_increment_increment表示自增长字段每次递增的量,其默认值是1,取值范围是1 .. 65535

    在主主同步配置时,需要将两台服务器的auto_increment_increment增长量都配置为2,而要把auto_increment_offset分别配置为1和2.

    这样才可以避免两台服务器同时做更新时自增长字段的值之间发生冲突。

     

    ------------------------------------------------------------------------------------------------------------------------------------------------

    -->创建表时指定AUTO_INCREMENT自增值的初始值:

        mysql>CREATE TABLE BIN_TBL (ID INT(5) PRIMARY KEY AUTO_INCREMENT)AUTO_INCREMENT=100;

    -->通过ALTER TABLE 修改初始值(但要大于表中的AUTO_INCREMENT自增值,否则设置无效):

        mysql>ATLER TABLE BIN_TBL AUTO_INCREMENT=100;

    -->如果自增序列的最大值被删除了,则在插入新记录时,该值被重用。

        就是说如果表中原本有AUTO_INCREMENT属性值连续为78、100的值,但100这个数据被删除了,下此再添加数据的时候自增值为101,100被重用了。

        即使在你将整个表中的所有数据delete清空后,之前的自增序列最大值还是会被重用。解决办法是:

        使用ATLER TABLE BIN_TBL AUTO_INCREMENT=0;重新设置自增初始值。

    -->设置AUTO_INCREMENT_INCREMENT以及AUTO_INCREMENT_offset用户变量值:(重启MySQL之后,这些修改会恢复为初始值1)

      mysql>SET auto_increment_increment=10;      #自增量每次增加的值改为10,

      mysql>SET auto_increment_offset=2;             #第一次加载数值时的偏移值的个位值

      mysql>SHOW VARIABLES LIKE 'AUTO_INC%'; #查看修改后变量的值

     

    展开全文
  • SQL中自增(AUTO_INCREMENT)字段介绍

    万次阅读 2018-07-12 16:33:25
    本文主要介绍 SQL(Structured Query Language)中的自增(AUTO_INCREMENT)字段的相关知识。 1 概述 AUTO_INCREMENT 会在新记录插入表中时,生成一个唯一的数字。 如果希望在每次插入新记录时,自动地创建主键...

    本文主要介绍 SQL(Structured Query Language)中的自增(AUTO_INCREMENT)字段的相关知识。

    1 概述

    AUTO_INCREMENT 会在新记录插入表中时,生成一个唯一的数字。

    如果希望在每次插入新记录时,自动地创建主键字段的值,那么就可以在表中创建一个 AUTO_INCREMENT 字段。

    2 用法

    例如,使用下列语句创建表 customers,同时将主键 customer_id 设置为自增字段,命令如下:

    mysql> create table customers (customer_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, first_name TEXT, last_name TEXT);
    Query OK, 0 rows affected (0.03 sec)

    3 说明

    1. 如果把“NULL”插入到 AUTO_INCREMENT 数据列里,MySQL 将自动生成下一个序列编号。序列编号从 1 开始,并以“1”为基数递增;

    2. 把“0”插入 AUTO_INCREMENT 数据列的效果,与插入“NULL”值一样,但不建议这样做,最好还是直接插入“NULL”值;

    3. 在插入记录时,如果没有为 AUTO_INCREMENT 数据列明确地指定一个数值,则等同插入“NULL”值;

    4. 在插入或更新记录时,如果为 AUTO_INCREMENT 数据列明确指定了一个数值,则会出现两种情况:情况一,如果插入的值与已有的编号重复,则会出现错误信息,因为 AUTO_INCREMENT 数据列的值必须是唯一的;情况二,如果插入的值大于现有编号的值,则会把该值插入到数据列中,并使 AUTO_INCREMENT 数据列的下一个编号从这个新的编号值开始递增(即跳过了一些编号)。

    展开全文
  • auto_increment_increment,auto_increment_offset1、auto_increment_increment与auto_increment_offset作用auto_increment_increment控制列中的值的增量值,也就是步长。auto_increment_offset确定AUTO_INCREMENT列...

        MySQL中对于表上ID自增列可以在创建表的时候来指定列上的auto_increment属性;等同于SQL server中的identity属性;Oracle则是通过Sequence方式来实现。在MySQL中,系统变量auto_increment_increment,auto_increment_offset 影响自增列的值及其变化规则。本文主要描述这两个系统变量的相关用法。

     

    1、auto_increment_increment与auto_increment_offset作用

    auto_increment_increment控制列中的值的增量值,也就是步长。
    auto_increment_offset确定AUTO_INCREMENT列值的起点,也就是初始值。
    变量范围:可以在全局以及session级别设置这2个变量
    
    --当前系统环境
    root@localhost[(none)]> show variables like 'version';
    +---------------+------------+
    | Variable_name | Value      |
    +---------------+------------+
    | version       | 5.5.39-log |
    +---------------+------------+
    
    root@localhost[mysql]> create database tempdb;
    
    root@localhost[mysql]> use tempdb;
    
    --查看变量auto_increment_increment与auto_increment_offset
    root@localhost[tempdb]> show variables like '%auto_incre%';
    +--------------------------+-------+
    | Variable_name            | Value |
    +--------------------------+-------+
    | auto_increment_increment | 1     |
    | auto_increment_offset    | 1     |
    +--------------------------+-------+
    

    2、演示auto_increment_increment与auto_increment_offset

    --创建演示表,使用auto_increment子句
    root@localhost[tempdb]> create table t1(id int not null auto_increment primary key, col varchar(20));
    
    --插入记录
    root@localhost[tempdb]> insert into t1(col) values('robin'),('fred'),('jack'),('james');
    
    --下面可以看到id列起始值为1,增量为1
    root@localhost[tempdb]> select * from t1;
    +----+-------+
    | id | col   |
    +----+-------+
    |  1 | robin |
    |  2 | fred  |
    |  3 | jack  |
    |  4 | james |
    +----+-------+
    
    --设置步长为5
    root@localhost[tempdb]> set session auto_increment_increment=5;
    
    root@localhost[tempdb]> show variables like '%auto_incre%';
    +--------------------------+-------+
    | Variable_name            | Value |
    +--------------------------+-------+
    | auto_increment_increment | 5     |
    | auto_increment_offset    | 1     |
    +--------------------------+-------+
    
    --清空表t1
    root@localhost[tempdb]> truncate table t1;
    
    --再次插入记录
    root@localhost[tempdb]> insert into t1(col) values('robin'),('fred'),('jack'),('james');
    
    --如下查询可以看到步长以5位基数发生变化
    root@localhost[tempdb]> select * from t1;
    +----+-------+
    | id | col   |
    +----+-------+
    |  1 | robin |
    |  6 | fred  |
    | 11 | jack  |
    | 16 | james |
    +----+-------+
    
    --设置初始值为5
    root@localhost[tempdb]> set session auto_increment_offset=5;
    
    root@localhost[tempdb]> show variables like '%auto_incre%';
    +--------------------------+-------+
    | Variable_name            | Value |
    +--------------------------+-------+
    | auto_increment_increment | 5     |
    | auto_increment_offset    | 5     |
    +--------------------------+-------+
    
    root@localhost[tempdb]> truncate table t1;
    
    root@localhost[tempdb]> insert into t1(col) values('robin'),('fred'),('jack'),('james');
    
    --下面是新的结果
    root@localhost[tempdb]> select * from t1;
    +----+-------+
    | id | col   |
    +----+-------+
    |  5 | robin |
    | 10 | fred  |
    | 15 | jack  |
    | 20 | james |
    +----+-------+
    
    

    3、auto_increment_increment与auto_increment_offset取值范围

    --将变量auto_increment_increment设置为0
    root@localhost[tempdb]> set session auto_increment_increment=0;
    
    --实际值变成了1
    root@localhost[tempdb]> show variables like '%auto_increment%';
    +--------------------------+-------+
    | Variable_name            | Value |
    +--------------------------+-------+
    | auto_increment_increment | 1     |
    | auto_increment_offset    | 5     |
    +--------------------------+-------+
    
    --同样将auto_increment_offset设置为0
    root@localhost[tempdb]> set session auto_increment_offset=0;
    
    --实际值也变成了1
    root@localhost[tempdb]> show variables like '%auto_increment%';
    +--------------------------+-------+
    | Variable_name            | Value |
    +--------------------------+-------+
    | auto_increment_increment | 1     |
    | auto_increment_offset    | 1     |
    +--------------------------+-------+
    
    --下面尝试将2个变量设置为大于65535
    root@localhost[tempdb]> set session auto_increment_increment=65537;
    
    root@localhost[tempdb]> set session auto_increment_offset=65537;
    
    --其实际的值都变成了65535
    root@localhost[tempdb]> show variables like '%auto_increment%';
    +--------------------------+-------+
    | Variable_name            | Value |
    +--------------------------+-------+
    | auto_increment_increment | 65535 |
    | auto_increment_offset    | 65535 |
    +--------------------------+-------+
    
    --尝试为2个变量设置为负值
    root@localhost[tempdb]> set session auto_increment_offset=-2;
    
    root@localhost[tempdb]> set session auto_increment_increment=-5;
    
    --下面的查询可以看出全部恢复到缺省值1
    root@localhost[tempdb]> show variables like '%auto_increment%';
    +--------------------------+-------+
    | Variable_name            | Value |
    +--------------------------+-------+
    | auto_increment_increment | 1     |
    | auto_increment_offset    | 1     |
    +--------------------------+-------+
    
    由上可以看出2个变量只能设置为1至65535之间的整数值。
    所有非正整数全部会置为缺省值1,大于65535的值会被自动置为65535。
    
    

    4、全局与session级别的设置

    --查看全局范围这2个变量的值
    root@localhost[tempdb]> show global variables like '%auto_increment%';
    +--------------------------+-------+
    | Variable_name            | Value |
    +--------------------------+-------+
    | auto_increment_increment | 1     |
    | auto_increment_offset    | 1     |
    +--------------------------+-------+
    
    --下面分别设置session基本的值
    root@localhost[tempdb]> set session auto_increment_increment=5;
    
    root@localhost[tempdb]> set session auto_increment_offset=10;
    
    --查看session级别的值
    root@localhost[tempdb]> show session variables like '%auto_increment%';
    +--------------------------+-------+
    | Variable_name            | Value |
    +--------------------------+-------+
    | auto_increment_increment | 5     |
    | auto_increment_offset    | 10    |
    +--------------------------+-------+
    
    --查看全局级别的值
    root@localhost[tempdb]> show global variables like '%auto_increment%';
    +--------------------------+-------+
    | Variable_name            | Value |
    +--------------------------+-------+
    | auto_increment_increment | 1     |
    | auto_increment_offset    | 1     |
    +--------------------------+-------+
    
    --设置全局级别的值
    root@localhost[tempdb]> set global auto_increment_increment=2;
    
    root@localhost[tempdb]> set global auto_increment_offset=3;
    
    root@localhost[tempdb]> show global variables like '%auto_increment%';
    +--------------------------+-------+
    | Variable_name            | Value |
    +--------------------------+-------+
    | auto_increment_increment | 2     |
    | auto_increment_offset    | 3     |
    +--------------------------+-------+
    
    

    5、已有auto_increment列值任一变量变化的情形

    root@localhost[tempdb]> truncate table t1;
    
    root@localhost[tempdb]> show variables like '%auto_increment%';
    +--------------------------+-------+
    | Variable_name            | Value |
    +--------------------------+-------+
    | auto_increment_increment | 1     |
    | auto_increment_offset    | 1     |
    +--------------------------+-------+
    
    root@localhost[tempdb]> insert into t1(col) values('robin'),('fred'),('jack');          
    
    root@localhost[tempdb]> select * from t1;
    +----+-------+
    | id | col   |
    +----+-------+
    |  1 | robin |
    |  2 | fred  |
    |  3 | jack  |
    +----+-------+
    
    root@localhost[tempdb]> set session auto_increment_increment=5;
    
    root@localhost[tempdb]> show variables like '%auto_increment%';
    +--------------------------+-------+
    | Variable_name            | Value |
    +--------------------------+-------+
    | auto_increment_increment | 5     |
    | auto_increment_offset    | 1     |
    +--------------------------+-------+
    
    --Author: Leshami
    --Blog  : http://blog.csdn.net/leshami
    
    root@localhost[tempdb]> insert into t1(col) values('david'),('tim'),('jerry');
    
    root@localhost[tempdb]> select * from t1;
    +----+-------+
    | id | col   |
    +----+-------+
    |  1 | robin |
    |  2 | fred  |
    |  3 | jack  |
    |  6 | david |
    | 11 | tim   |
    | 16 | jerry |
    +----+-------+
    
    New_value = auto_increment_offset+ N * auto_increment_increment
    New_value1 = 1 + 1 * 5 = 6
    New_value2 = 1 + 2 * 5 = 11
    
    --下面是修改auto_increment_offset后的结果
    root@localhost[tempdb]> set session auto_increment_offset=2;
    
    root@localhost[tempdb]> insert into t1(col) values('lewis'),('ian');
    
    root@localhost[tempdb]> select * from t1;
    +----+-------+
    | id | col   |
    +----+-------+
    |  1 | robin |
    |  2 | fred  |
    |  3 | jack  |
    |  6 | david |
    | 11 | tim   |
    | 16 | jerry |
    | 22 | lewis |
    | 27 | ian   |
    +----+-------+
    
    这个id为22,应该是这样推算来的:max(id)+(new_offset-old_offset)+increment
    也就是说变化auto_increment_offset后的第一个值为max(id)+(new_offset-old_offset)+increment之后再按步长递增。
    

    鹏城DBA总群

    展开全文
  • auto increment

    2015-12-09 10:22:15
    1.auto increment字段 描述:我们通常希望在每次插入新记录的时候,自动地创建主键字段的值。我们可以在表中创建一个auto-increment字段。 1)、MySQL的语法: create table persons ( id int not null auto_...

    1.auto increment字段

    描述:我们通常希望在每次插入新记录的时候,自动地创建主键字段的值。我们可以在表中创建一个auto-increment字段。

    1)、MySQL的语法:

    create table persons

    (

    id int not null auto_increment,

    name varchar(255) not null,

    primary key(id)

    )

    注释:MySQL使用auto_increment关键字来执行auto-increment任务。默认地,auto_increment的开始值是1,每条新记录递增1.

    要让auto_increment序列以及其他的值起始,请使用下面的语句:

    alter table persons auto_increment=100

    2)、SQL Server的语法

    create table persons

    (

    in int  primary key identity,

    name varchar(255)

    )

    注释:SQL Server使用identity关键字来执行auto-increment任务。默认的,identity的开始值是1,每条记录递增1.

    要让表中的id以20起且递增2,请把identity改为identity(20,2) 如:

    create table persons

    (

    in int  primary key identity(20,2),

    name varchar(255)

    )

    3)、Access的语法

    create table persons

    (

    id int primary key autoincrement,

    name varchar(255)

    )

    注释:MS Access使用autoincrement 关键字来执行auto-increment任务。默认地,autoincrement的开始值是1,每条新记录递增1.

    要让表中的id以20起且递增2,请把autoincrement改为autoincrement(20,2) 如:

    create table persons

    (

    id int primary key autoincrement(20,2),

    name varchar(255)

    )

    4)、Oracle语法

    在Oracle 中,代码稍微复杂一点。

    你必须通过sequence对创建auto-increment字段(该对象生成数字序列)。

    使用下面的create sequence 语法

    create sequence seq_person

    minvalue 1

    start with 1

    increment by 1

    cache 10

    上面的代码创建名为seq_person的序列对象,它以1起始且以1递增。改对象缓存10个值以提高性能。cache选项规定了为访问速度要存储多少个序列值。

    在表“persons”中插入新记录,我们必须使用nextval函数(该函数从seq_person序列中取回下一个值):

    insert  into persons (id,name) values (seq_person.nextval,'lars')

    展开全文
  • mysql中有自增长字段,在做数据库的主主同步时需要设置自增长的两个相关配置:auto_increment_offset和auto_increment_increment。 auto_increment...
  • MySQL的系统变量或会话变量auto_increment_increment(自增步长)和auto_increment_offset(自增偏移量)控制着数据表的自增列ID。 mysql> show tables; Empty set (0.00 sec) mysql> CREATE TABLE `...
  • 实际上两个值是这样的: 我们理解auto_increment_offset为0开始的偏移量 ...auto_increment_offset+(N-1)*auto_increment_increment N代表的是插入的次数。这算出来实际上是在0-+∽ 之间可以设置的值。...
  • 在MySQL中,系统变量auto_increment_increment与auto_increment_offset是与自增列相关的两个参数变量。在官方文档中,将其划分为Replication Master Options and Variables 。具体参考官方文档17.1.6.2Replication ...
  • MySQL中ENGINE=InnoDB、AUTO_INCREMENT的意思

    万次阅读 多人点赞 2018-04-26 10:26:03
    `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户表id', `username` varchar(50) NOT NULL COMMENT '用户名', `password` varchar(50) NOT NULL COMMENT '用户密码,MD5加密', `email` var...
  • vim-visual-increment:visual-increment.vim-使用CTRL + AX通过可视模式创建数字或字母的递增序列
  • MySQL之auto_increment问题记录

    万次阅读 2020-01-30 11:54:48
    概述 在数据库应用中,经常用到自动递增的唯一编号来标识记录。...可用“alter table table_name auto_increment=n”命令来重设自增的起始值,当然在设置的时候MySQL会取数据表中auto_increment列的最大值...
  • jquery.increment-源码

    2021-06-05 09:05:52
    jQuery 增量 使用此插件,您可以轻松准备增量输入。 ... [removed][removed] 然后我们准备如下输入: ... $(".increment-input").increment(); [removed] 将其设置为{double : true}就足以将两位数打印到输入中。
  • 主要介绍了MySQL查询和修改auto_increment的方法,实例分析了select查询auto_increment及ALTER修改auto_increment的技巧,需要的朋友可以参考下
  • 关于 mysql自增列的有2个参数: auto_increment_increment  auto_increment_offset  auto_increment_offset确定...auto_increment_increment确定AUTO_INCREMENT的跨度。 mysql> show variables like '%auto_inc
  • 问题: 设置id列为自增,却发现id值不连续,也不是从1开始的 ...设置AUTO_INCREMENT_INCREMENT=1;表示id的增长偏移量为1,就是下一个id比上一个id大1; tip:为什么说是临时全局变量,因为MySQL重启...
  • blog_auto_increment-源码

    2021-03-03 13:26:14
    blog_auto_increment
  • PostgreSQL AUTO INCREMENT

    千次阅读 2019-09-04 17:37:09
    PostgreSQL AUTO INCREMENT(自动增长) AUTO INCREMENT(自动增长) 会在新记录插入表中时生成一个唯一的数字。 PostgreSQL 使用序列来标识字段的自增长,数据类型有 smallserial、serial 和 bigserial 。这些...
  • PostgreSQL AUTO INCREMENT(自动增长) AUTO INCREMENT(自动增长) 会在新记录插入表中时生成一个唯一的数字。 PostgreSQL 使用序列来标识字段的自增长,数据类型有 smallserial、serial 和 bigserial 。这些属性...
  • hbase increment代码

    2015-06-06 14:14:53
    h并添加队列 6.返回kvs   HRegion代码,如下   ... * Perform one or more increment operations on a row. ... * @param increment ... * @return new key... public Result increment(Increment increment, long non
  • mysql的increment详情

    2020-08-23 13:13:18
    目录increment代表着什么?设置自增起始量设置自增间隔量 increment代表着什么? increment关键字代表自增列,相当于sql server中的identity关键字,不同的是,指定自增起始量和间隔量的方式不同 设置自增起始量 set...
  • Laravel开发-increment-decrement 增加/减少和排序行的简单方法
  • MySQL用户多半都有Auto Increment情结,不过MongoDB缺省并没有实现,所以需要模拟一下,编程语言以PHP为例
  • 本篇文章是对mysql中的auto_increment的问题进行了详细的分析介绍,需要的朋友参考下
  • 主要介绍了MySQL 序列 AUTO_INCREMENT详解及实例代码的相关资料,需要的朋友可以参考下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 400,562
精华内容 160,224
关键字:

increment