不朽
不朽
发布于 2024-06-14 / 7 阅读
0
0

mysql-sequence

MySql中SEQUENCE序列替代方案

//查询订单编号-mysql
select concat(date_format(now(),'%y%m%d%H%I%s'), lpad(nextval('bank_orderNo'), 5, 0)) as orderNum from dual;

//创建索引表
create table sequence (       
seq_name        VARCHAR(50) NOT NULL, -- 序列名称       
current_val     INT         NOT NULL, -- 当前值       
increment_val   INT         NOT NULL    DEFAULT 1, -- 步长(跨度)       
PRIMARY KEY (seq_name)   ); 

//插入一个索引数据
INSERT INTO sequence VALUES ('bank_orderNo', '0', '1');

//创建获取序列当前值函数
create function currval(v_seq_name VARCHAR(50))   
returns integer(11) 
begin
 declare value integer;
 set value = 0;
 select current_val into value  from sequence where seq_name = v_seq_name;
   return value;
end;

//创建获取序列下一个值函数
create function nextval (v_seq_name VARCHAR(50)) returns integer(11) 
begin
    update sequence set current_val = current_val + increment_val  where seq_name = v_seq_name;
	return currval(v_seq_name);
end;


评论