mysql通过表和function模拟oracle的sequence

1、新建表

CREATE TABLE `sequence` (
  `seq_name` varchar(45) NOT NULL COMMENT ‘sequence名‘,
  `seq_value` bigint(20) NOT NULL COMMENT ‘sequence值‘,
  `increment` int(3) NOT NULL DEFAULT ‘1‘ COMMENT ‘步进‘,
  PRIMARY KEY (`seq_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

2、插入初始数据

INSERT INTO `sequence` VALUES (‘SEQ_CERT‘, ‘26‘, ‘1‘);

3、编写function

delimiter //

CREATE FUNCTION nextValue (s varchar(50)) RETURNS int(10)

BEGIN
    DECLARE r integer;
    set r = 0;
    update sequence set seq_value = seq_value + increment where seq_name = s;
    select seq_value into r from sequence where seq_name = s; 
    return r;
END

//
delimiter ;

4、然后就可以使用function获取数据。

select nextValue(‘SEQ_CERT‘);


mysql通过表和function模拟oracle的sequence,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。