一、需求描述
现有一张产品表t_product_test,表里有一个用于排序字段order_value,是数字类型,期望插入数据时,该字段自动增长
二、实现非主键自增长
2.1 方式一:建表时直接设置字段为自增长
-- 建表
CREATE TABLE t_product_test (
key_id varchar(255) NOT NULL,
product_name varchar(500) DEFAULT NULL,
order_value int(11) NOT NULL AUTO_INCREMENT, -- 自增长
PRIMARY KEY (key_id), -- 主键
UNIQUE KEY order_value_UNIQUE (order_value) -- 自增长字段要设置 唯一键约束
) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- AUTO_INCREMENT=1000 起步值为1000
-- 插入测试数据
insert into t_product_test (key_id,product_name) values('900001','apple');
insert into t_product_test (key_id,product_name) values('900002','apple2');
-- 查询检查数据
select * from t_product_test;
2.2 方式二:增加字段时设置字段为自增长
-- 建表
CREATE TABLE t_product_test (
key_id varchar(255) NOT NULL,
product_name varchar(500) DEFAULT NULL,
order_value int(11) ,
PRIMARY KEY (key_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- 设置order_value 为自增长
alter table t_product_test add UNIQUE KEY order_value_UNIQUE (order_value) ; -- 自增长字段要设置 唯一键约束
alter table t_product_test modify column order_value int(11) NOT NULL AUTO_INCREMENT ; -- 自增长
alter table t_product_test AUTO_INCREMENT=1000; -- 设置自增长起步值为1000
-- 插入测试数据
insert into t_product_test (key_id,product_name) values('900001','apple');
insert into t_product_test (key_id,product_name) values('900002','apple2');
-- 查询检查数据
select * from t_product_test;
有三点需要说明一下:
- 自增长字段必须是数字类型
- 自增长字段要设置唯一键约束 UNIQUE KEY
- 一张表只能有一个自增长字段,不能设置多个
测试结果