CREATE DEFINER=`root`@`%` FUNCTION `currval`(seq_name VARCHAR(50)) RETURNSbigint(20) BEGIN DECLAREcurrentbigint; SETcurrent=0; SELECT currentValue INTOcurrent FROM _SEQ WHERELOWER(seqname) =LOWER(seq_name); RETURNcurrent; END
CREATE DEFINER=`root`@`%` FUNCTION `nextval`(seq_name VARCHAR(50)) RETURNSbigint(20) BEGIN UPDATE _SEQ SET currentValue = currentValue + increment WHERELOWER(seqname) =LOWER(seq_name); RETURN currval(seq_name); END
CREATE TABLE `_seq` ( `seqname` varchar(50) NOT NULL, `currentValue` bigint(20) NOT NULL, `increment` bigint(20) NOT NULLDEFAULT'1', PRIMARY KEY (`seqname`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;