会员登录 - 用户注册 - 设为首页 - 加入收藏 - 网站地图 sql设置id自动增长!
当前位置:首页 > 知识 > sql设置id自动增长 正文

sql设置id自动增长

时间:2026-10-17 06:33:08 来源:烟消火灭网 作者:探索 阅读:951次

在MySQL里给主键加上`AUTO_INCREMENT`,置id自就能让数据库自己管编号。动增这事儿简单到一句话能说完,置id自但真用起来,动增坑也不少。置id自

建表的动增时候这么写:

CREATE TABLE users ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50), PRIMARY KEY (id) );

关键是那行`AUTO_INCREMENT`,它告诉MySQL:这列你别管了,置id自我来填。动增每次插入新行,置id自id自动加1。动增1、置id自2、动增3、置id自4……看着挺顺,动增对吧?置id自其实这里头有个隐藏细节——它从1开始,但如果你删了id=3那行,再插新数据,id直接跳到5。不是3,是5。因为自增计数器不会回头。

这设计挺合理,避免并发插入时撞号。可有些人第一次遇到就懵了,以为数据库坏了。其实没坏,这就是自增的本性。

想改起始值?建表时加个参数:

CREATE TABLE orders ( order_id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (order_id) ) AUTO_INCREMENT = 1000;

从1000开始,订单号带个前缀感,看着专业。老表想改起始值也容易:

ALTER TABLE orders AUTO_INCREMENT = 2000;

但这命令有个脾气——如果表里已有数据,你设的起始值不能小于当前最大id+1。比如最大id是1500,你想设成1000,MySQL直接忽略,还是按1501往下走。它不会报错,就是不理你。

再说个实际案例。前阵子我帮朋友调一个电商后台,他们的商品表id用自增,结果运营手动往表里插了几条测试数据,id直接飙到五位数。后来上线正式数据,商品编号长得跟乱码似的。解决办法?清掉测试行,然后跑一句:

ALTER TABLE products AUTO_INCREMENT = 1;

前提是表里不能有比1大的id。要是已经混进去了,就得先删数据或者改id,麻烦得很。所以生产环境里,别手贱去动自增列的值。

还有个常见误区:有人以为自增必须配主键。其实不是,你可以给普通列加自增,但MySQL要求它是索引列。大多数情况下,还是老老实实配主键,省心。

要是用PostgreSQL,玩法又不一样,它用`SERIAL`或者`IDENTITY`,自增逻辑跟MySQL略有区别。但核心思想一样——让数据库管编号,别让应用层操心。

最后说个冷知识。MySQL 8.0以后,自增计数器是持久化的。以前版本重启服务后,计数器可能重置,导致id复用,引发诡异bug。现在不会了,重启后接着上次的编号走。这改动看着小,实际救了不少人。

自增id这功能,属于那种“平时感觉不到存在,出问题才想起它”的东西。设置不难,难的是理解它的脾气。记住两件事:删行不会让编号回头;手动改自增列值要格外小心。做到这两点,基本就稳了。

(责任编辑:探索)

相关内容
  • windows7漏洞修复补丁包
  • html5网页设计模板
  • javaweb实训报告总结
  • 网警网站
  • 清远信誉好打假调查价格
  • ai彩票算法软件免费
  • 一个网站的顶级域名是什么
  • 互联网推广平台有哪些
推荐内容
  • fiddler怎么抓手机app的包
  • 三方机构服务器漏洞扫描
  • 对西方文化和价值观渗透侵袭的警惕不够
  • Web渗透测试SQL注入课程报告
  • 电影票网络代售平台资质
  • 西宁市网信办官网