Mysql实现自增序列
mysql自带了自增序列,为了方便通过数据库获取唯一的增长序列满足业务需求,模拟oracle序列完成序列获取方案;为了达到oracle序列的效果,在mysql创建函数来完成模拟。
创建一个专门用来做序列的表:
create table sequence (
seq_name VARCHAR(50) NOT NULL, -- 序列名称
current_val INT NOT NULL, -- 当前值
increment_val INT NOT NULL DEFAULT 1, -- 步长(跨度)
1.创建函数---获取当前值(v_seq_name 参数值 代表序列名称)
create function currval(v_seq_name VARCHAR(50))
returns integer
begin
declare value integer;
set value = 0;
select current_val into value from sequence where seq_name = v_seq_name;
return value;
end;
select currval('序列名称');
2.创建函数--获取下一个值(v_seq_name 参数值 代表序列名称)
create function nextval (v_seq_name VARCHAR(50))
returns integer
begin
update sequence set current_val = current_val + increment_val where seq_name = v_seq_name;
return currval(v_seq_name);
end;
最终使用方式:
select nextval('序列名称');