这是为 mysql 编写的简易序列存储程序(一个函数)。 在使用序列之前,需要通过往序列记录表中加入数值的方式初始化序列: insert into sequence ('name...', 0); 之后,就可以通过 nextval('name...') 函数来取得名为 name... 的序列新值。 考虑到 update 自
这是为 mysql 编写的简易序列存储程序(一个函数)。
在使用序列之前,需要通过往序列记录表中加入数值的方式初始化序列:
insert into sequence ('name...', 0);
之后,就可以通过 nextval('name...') 函数来取得名为 name... 的序列新值。
考虑到 update 自身的行锁能力。所以本序列程序具有很强的并发提供能力。
drop table if exists sequence;create table sequence( name varchar(32), maxindex integer, constraint cst_sequence_pk primary key (name, maxindex)) default character set utf8engine innodb;
set global log_bin_trust_function_creators = 1;drop function if exists nextval;delimiter //create function nextval(sequencename varchar(32)) returns integer not deterministic contains sql/* ********** ********** ********** **********this is a common sequence function. it is based on table sequence.this function will return new integer by given sequence name.author: shane loo liversion: 1.1.1, 2012-7-17 tuesday modified edition.history:1.1.0, 2012-7-14 saturday shane loo li new1.1.1, 2012-7-17 tuesday shane loo li modified wrong column name.********** ********** ********** ********** */begin declare imaxindex integer; update sequence set maxindex = maxindex + 1 where name = sequencename; select maxindex into imaxindex from sequence where name = sequencename; return imaxindex;end//delimiter ;
