序列 在数据库中的使用基本步骤 :
– 1、 创建序列表
CREATE TABLE `sys_sequence` (
`seq_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`current_val` int NOT NULL,
`increment_val` int NOT NULL,
`desc` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
PRIMARY KEY (`seq_name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC;
– 2、写入 数据
INSERT INTO `sys_sequence` (`seq_name`, `current_val`, `increment_val`, `desc`) VALUES ('order', 3000032, 1, '订单');
INSERT INTO `sys_sequence` (`seq_name`, `current_val`, `increment_val`, `desc`) VALUES ('order-num', 1005687, 1, '订单编码');
INSERT INTO `sys_sequence` (`seq_name`, `current_val`, `increment_val`, `desc`) VALUES ('order-product-num', 1005529, 1, '产品编码');
– 注意注意:如果 3,4 不能执行成功的话 ,可以执行以下SQL, 执行完就可以执行3,4 SQL了
set global log_bin_trust_function_creators=TRUE;
– 3、创建函数 currval , 不创建 , 会报错 function currval() not found
create function currval(v_seq_name VARCHAR(50))
returns integer(11)
begin
declare value integer;
set value = 0;
select current_val into value from sys_sequence where seq_name = v_seq_name;
return value;
end;
– 4、 创建函数 nextval , 不创建 , 会报错 function nextval() not found
create function nextval (v_seq_name VARCHAR(50)) returns integer(11)
begin
update sys_sequence set current_val = current_val + increment_val where seq_name = v_seq_name;
return currval(v_seq_name);
end;
– 5、查询创建的序列 , order 是变表中 seq_name 字段的值
select nextval("order")
– 6、查询序列表
select * from sys_sequence
– 如果想修改, 可以先删除函数 ,再次创建
drop function currval;
drop function nextval;
具体剩下的 在 java中怎么用 , 还没滤清 呢!!! 先这样