mariadb使用函数实现oracle的序列功能
由于mariadb中没有序列,使用函数实现oracle的序列功能
1、创建序列专用表 序列名 初始值 步长1
create table mariadb_seq (
name varchar(50) not null primary key,
start_value int not null,
increment_value int not null default 1
);
2、创建序列
insert into mariadb_seq values('user_seq',1,1);
3、定义获取序列函数user_nextval
DELIMITER //
create function user_nextval(str varchar(50)) returns integer
begin
declare i int;
set i=(select start_value from mariadb_seq where name=str);
-- 最大99999999,超过后然后置为1
if i<99999999
then update mariadb_seq
set start_value=i+increment_value
where name=str;
else
update mariadb_seq
set start_value=1
where name=str;
end if;
return i;
end;
4、mybatis中查询序列
SELECT user_nextval('user_seq');