您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

给MySQL增加Sequence管理功能_MySQL

2024/3/18 5:23:59发布18次查看
bitscn.com -- sequence 管理表
drop table if exists sequence;
create table sequence (
         name varchar(50) not null,
         current_value int not null,
         increment int not null default 1,
         primary key (name)
) engine=innodb;
-- 取当前值的函数
drop function if exists currval;
delimiter $
create function currval (seq_name varchar(50))
         returns integer
         language sql
         deterministic
         contains sql
         sql security definer
         comment ''
begin
         declare value integer;
         set value = 0;
         select current_value into value
                   from sequence
                   where name = seq_name;
         return value;
end
$
delimiter ;
-- 取下一个值的函数
drop function if exists nextval;
delimiter $
create function nextval (seq_name varchar(50))
         returns integer
         language sql
         deterministic
         contains sql
         sql security definer
         comment ''
begin
         update sequence
                   set current_value = current_value + increment
                   where name = seq_name;
         return currval(seq_name);
end
$
delimiter ;
-- 更新当前值的函数
drop function if exists setval;
delimiter $
create function setval (seq_name varchar(50), value integer)
         returns integer
         language sql
         deterministic
         contains sql
         sql security definer
         comment ''
begin
         update sequence
                   set current_value = value
                   where name = seq_name;
         return currval(seq_name);
end
$
delimiter ;
/*
-- 测试
insert into sequence values ('testseq', 0, 1);
select setval('testseq', 10);
select currval('testseq');
select nextval('testseq');
*/
作者 json的博客 bitscn.com
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product