mysql 创建sequence
来源:互联网 发布:酷狗铃声制作专家 mac 编辑:程序博客网 时间:2024/05/01 02:57
Mysql下载安装:http://blog.csdn.net/yuxiangaaaaa/article/details/54018907
mysql不能像db2和Oracle那样直接create sequence 。
MySQL自增长与Oracle序列的区别:
自增长只能用于表中的其中一个字段
自增长只能被分配给固定表的固定的某一字段,不能被多个表共用.
自增长会把一个未指定或NULL值的字段自动填上.
- CREATE TABLE Test(
- id INT NOT NULL AUTO_INCREMENT,
- name VARCHAR(60) NOT NULL,
- PRIMARY KEY (id)
- ) ENGINE=InnoDB;
Oracle、DB2可以这样
- CREATE TABLE Test(
- id INT NOT NULL,
- name VARCHAR2(60) NOT NULL,
- PRIMARY KEY (id)
- );
- CREATE SEQUENCE TestSeq;
- INSERT INTO Test(id,name,released) VALUES (TestSeq.NEXTVAL,'Liruid');
下面来看一下mysql下实现sequence:
首先创建sequence表
CREATE TABLE tbl_sequence ( seq_name VARCHAR(50) NOT NULL, minvalue INT NOT NULL, maxvalue INT NOT NULL, current_val INT NOT NULL, increment_val INT DEFAULT '1' NOT NULL, PRIMARY KEY (seq_name) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
分别对应:seq_name-序列名称,minvalue-最小值,maxvalue-最大值,current_val-当前值,increment_val-增长步数
插入一条数据:
insert into tbl_sequence (seq_name, minvalue, maxvalue, current_val, increment_val) values ('seq_no', 1, 99999999, 1, 1);
创建function _nextval() 用于获取当前序列号
DELIMITER //create function _nextval(name varchar(50)) returns integer begin declare _cur int;declare _maxvalue int; -- 接收最大值declare _increment int; -- 接收增长步数set _increment = (select increment_val from tbl_sequence where seq_name = name);set _maxvalue = (select maxvalue from tbl_sequence where seq_name = name);set _cur = (select current_val from tbl_sequence where seq_name = name); update tbl_sequence -- 更新当前值 set current_val = _cur + increment_val where seq_name = name ; if(_cur + _increment >= _maxvalue) then -- 判断是都达到最大值 update tbl_sequence set current_val = minvalue where seq_name = name ;end if;return _cur; end; //DELIMITER ;
说明:DELIMITER //修改sql执行结束标识;
当前序列达到最大值时,重新刷新到最小值开始,实现sequence循环使用。
1 0
- mysql创建sequence
- mysql 创建sequence
- 创建sequence
- mysql 中创建自增的序列(Sequence)
- mysql sequence
- mysql sequence
- Oracle创建序列 sequence
- oracle中创建sequence
- 创建序列sequence
- oracle创建sequence
- 创建 trigger,sequence , procdure
- TimesTen_创建序列(sequence)
- [Oracle]创建序列sequence
- 创建一个序列sequence
- Oracle创建SEQUENCE
- oracle 创建sequence创建database_link
- Oracle创建sequence和查询sequence
- ORACLE SEQUENCE oracle创建sequence(转载)
- JavaScript原型深入解析
- Action获取参数
- 带你开发一款给Apk中自动注入代码工具icodetools(完善篇)
- MySQL存储引擎中的MyISAM和InnoDB区别详解
- SoC嵌入式软件架构设计之二:内存管理单元的软、硬件协同设计
- mysql 创建sequence
- 1001害死人不偿命的(3n+1)猜想
- recycleView 滑动删除Item,拖拽切换Item,你想了解的都在这儿
- linux 内核/用户空间获取时间
- 用mapreduce计算wordCount和手机流量统计程序运行过程
- 想快速全面了解LoRa?看这篇就够了!
- NFS服务配置
- (六)文件描述符及最大打开文件个数
- vsftpd虚拟用户目录及权限分离