您的位置:首页 > 数据库 > Oracle

mysql通过表和function模拟oracle的sequence

2014-03-10 16:39 381 查看
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');
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: