用mysql实现oracle sequence功能
来源:互联网 发布:painter软件的内存大小 编辑:程序博客网 时间:2024/06/06 06:30
出处:http://blog.csdn.net/maidou_2011/article/details/7758282
思路:我们可以用一张表来记录sequence数据,其实在使用oracle sequence的时候也类似是一张表,currentval、nextval和增长系数就类似表中的字段。而currentval、nextval我们可以设计成两个function这样在调用的时候返回currentval、nextval的值。
设计表seqMsql:
- CREATE TABLE seqMysql
- (
- seqname VARCHAR(50) NOT NULL, --sequence名称
- currentValue INT NOT NULL, --当前sequence值
- increment INT NOT NULL DEFAULT 1, --增长系数
- PRIMARY KEY (seqname)
- ) ENGINE=InnoDB;
实例:插入一个sequence数据
- INSERT INTO seqMysql VALUES ('browserSeq',10002,1);
- +------------+--------------+-----------+
- | seqname | currentValue | increment |
- +------------+--------------+-----------+
- | browserSeq | 10002 | 1 |
- +------------+--------------+-----------+
- 1 row in set
获取当前值function:
- DELIMITER $
- CREATE FUNCTION currval (seq_name VARCHAR(50))
- RETURNS INTEGER
- CONTAINS SQL
- BEGIN
- DECLARE current INTEGER;
- SET current = 0;
- SELECT currentValue INTO current
- FROM seqMysql
- WHERE seqname = seq_name;
- RETURN current;
- END$
- DELIMITER ;
查询:
- mysql> SELECT currval('browserSeq');
- +--------------------+
- | currval('browserSeq')|
- +--------------------+
- | 10002 |
- +--------------------+
- 1 row in set
获取下一个值function:
- DELIMITER $
- CREATE FUNCTION nextval (seq_name VARCHAR(50))
- RETURNS INTEGER
- CONTAINS SQL
- BEGIN
- UPDATE seqMysql
- SET currentValue = currentValue + increment
- WHERE seqname = seq_name;
- RETURN currval(seq_name);
- END$
- DELIMITER ;
查询:
- mysql> SELECT nextval('browserSeq');
- +-----------------------+
- | nextval('browserSeq') |
- +-----------------------+
- | 10003 |
- +-----------------------+
- 1 row in set
设置增长系数function:
- DELIMITER $
- CREATE FUNCTION setval (seq_name VARCHAR(50), value INTEGER)
- RETURNS INTEGER
- CONTAINS SQL
- BEGIN
- UPDATE seqMysql
- SET currentValue = value
- WHERE seqname = seq_name;
- RETURN currval(seq_name);
- END$
- DELIMITER ;
0 0
- 用mysql实现oracle sequence功能
- 用mysql实现oracle sequence功能
- mysql实现oracle sequence功能
- mysql 实现oracle中sequence 功能
- mysql实现oracle的sequence
- Navicat for Mysql 模拟实现oracle sequence
- MySQL实现类似Oracle的序列 - sequence
- 在mysql 中模拟oracle中的 sequence功能
- mysql实现oracle lag功能
- [ORACLE]ORACLE 实现mysql中的limit 功能
- 用mysql实现类似于oracle dblink的功能
- 用mysql实现类似于oracle dblink的功能
- MySql中实现类似Oracle的Sequence方案
- MySQL实现ORACLE序列(Sequence)的解决方案
- MySQL 增加 Sequence 管理功能
- MySQL增加Sequence管理功能
- MySQL增加Sequence管理功能
- MySQL增加Sequence管理功能
- AES 加密 PHP 和 JAVA 互通
- Maven Getting Started - 配置Jboss仓库
- java中如何避免空指针异常
- 正则表达式思考+的作用
- Linux产生随机数
- 用mysql实现oracle sequence功能
- Difference between Android Service,Thread,IntentService and AsyncTask
- 链式存储面试题-单链表反转
- 推荐两款好的js弹窗插件
- LeetCode--Path Sum
- NYOJ-115 城市平乱
- window.dialogArguments.location.reload();
- 通过CSS3 Media Query实现响应式Web设计
- ios 8 获取地理位置