当前位置: 代码网 > it编程>数据库>Mysql > MySQL 序列(AUTO_INCREMENT)的使用示例

MySQL 序列(AUTO_INCREMENT)的使用示例

2025年11月27日 Mysql 我要评论
核心基础本质:mysql 无内置序列类型,通过auto_increment模拟自增数字序列;约束:一张表仅 1 个自增主键列,列类型为整数(int/bigint/unsigned int);特性:删除

核心基础

  1. 本质:mysql 无内置序列类型,通过auto_increment模拟自增数字序列;
  2. 约束:一张表仅 1 个自增主键列,列类型为整数(int/bigint/unsigned int);
  3. 特性:删除数据后自增值不回退,手动修改易引发唯一性冲突。

一、auto_increment 基础使用

1. 创建含自增列的表

create table insect (
    id int unsigned not null auto_increment,
    primary key (id),
    name varchar(30) not null,
    date date not null,
    origin varchar(30) not null
);

2. 插入数据(省略自增列值)

insert into insect (id,name,date,origin) 
values (null,'housefly','2001-09-10','kitchen');

二、自增值获取

场景核心语句 / 方法
客户端查刚插入值select last_insert_id();
客户端查表当前值show table status like '表名';(看 auto_increment 列)

三、序列操作

1. 重置序列(谨慎:并发插入易混乱)

alter table insect drop id;
alter table insect
add id int unsigned not null auto_increment first,
add primary key (id);

2. 设置序列起始值

操作时机语句示例
建表时指定create table insect (...) engine=innodb auto_increment=100 charset=utf8;
建表后修改alter table insect auto_increment = 100;

四、扩展:自定义序列管理(批量 / 自定义幅度)

1. 建序列管理表

drop table if exists sequence; 
create table sequence ( 
    name varchar(50) not null, 
    current_value int not null, 
    increment int not null default 1, 
    primary key (name)
) engine=innodb;

2. 核心函数

函数名作用关键逻辑
currval查序列当前值select current_value from sequence where name = seq_name;
nextval查下一个值(自动累加)update sequence set current_value += increment where name = seq_name;
setval设序列当前值update sequence set current_value = value where name = seq_name;

3. 测试示例

insert into sequence values ('testseq', 0, 1); -- 添加序列
select setval('testseq', 10); -- 设初始值10
select currval('testseq'); -- 查当前值
select nextval('testseq'); -- 查下一个值

复习速记提示

  • 自增列必为整数 + 主键,一张表仅一个;
  • 重置序列需删列重建,避免并发操作;
  • 自定义序列适合批量管理、自定义自增幅度场景。

到此这篇关于mysql 序列(auto_increment)的使用示例的文章就介绍到这了,更多相关mysql 序列 内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com