mysql实现oracle sequence功能

来源:互联网 发布:linux硬件时间 编辑:程序博客网 时间:2024/06/08 13:38

适用场景:
实现oracle序列自增效果

具体代码示例:

/*数据存放表*/CREATE TABLE seq(    seq_name VARCHAR(50) NOT NULL,  #名称  cur_value INT NOT NULL,  #当前值  increment INT NOT NULL DEFAULT 1,  #增长系数  PRIMARY KEY (seq_name)  #主键) ENGINE=INNODB;  /*插入源记录*/INSERT INTO seq VALUES ('mySeq',0,1);/*查询结果*/SELECT * FROM seq;/*创建seq当前值查询函数*/DELIMITER $$/*定义函数名称传入参数是序列名返回当前序列值*/CREATE FUNCTION `myoa`.`cur_value` (seq_name VARCHAR (50)) RETURNS INTEGER CONTAINS SQL BEGIN  DECLARE cur INTEGER ;  SET cur = 0 ;  SELECT     cur_value INTO cur   FROM    seq   WHERE seq_name = seq_name ;  RETURN cur ;END $$DELIMITER ;/*测试*/SELECT cur_value('mySeq');/*创建seq下一个值函数*/DELIMITER $$/*定义函数名称传入参数是序列名返回下一个序列值*/CREATE FUNCTION `myoa`.`next_value` (seq_name VARCHAR (50)) RETURNS INTEGER CONTAINS SQL BEGIN  UPDATE     seq   SET    cur_value = cur_value + increment   WHERE seq_name = seq_name ;  RETURN cur_value (seq_name);END $$DELIMITER ;/*测试*/SELECT next_value('mySeq');

结果:
这里写图片描述

这里写图片描述

这里写图片描述

0 0
原创粉丝点击