Mysql下载安装:http://blog.csdn.net/yuxiangaaaaa/article/details/54018907

mysql不能像db2和Oracle那样直接create sequence 。

MySQL自增长与Oracle序列的区别: 
自增长只能用于表中的其中一个字段 
自增长只能被分配给固定表的固定的某一字段,不能被多个表共用. 
自增长会把一个未指定或NULL值的字段自动填上.

  1. CREATE TABLE Test(
  2. id   INT NOT NULL AUTO_INCREMENT,
  3. name VARCHAR(60) NOT NULL,
  4. PRIMARY KEY (id)
  5. ) ENGINE=InnoDB;

INSERT INTO Movie (name) VALUES ( 'Liruid' );

Oracle、DB2可以这样

  1. CREATE TABLE Test(
  2. id       INT NOT NULL,
  3. name     VARCHAR2(60) NOT NULL,
  4. PRIMARY KEY (id)
  5. );
  6. CREATE SEQUENCE TestSeq;
  1. INSERT INTO Test(id,name,released) VALUES (TestSeq.NEXTVAL,'Liruid');
下面来看一下mysql下实现sequence:
首先创建sequence表
CREATE TABLEtbl_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循环使用。

mysql 创建sequence相关推荐

  1. mysql实现类似oracle的序列,mysql 创建[序列],功能类似于oracle的序列

    参考自菜鸟教程 使用函数创建自增序列管理表(批量使用自增表,设置初始值,自增幅度) 第一步:创建Sequence管理表 sequence DROP TABLE IF EXISTS sequence; ...

  2. Mysql创建自增序列方案(模拟Oracle序列)

    Mysql实现自增序列 mysql自带了自增序列,为了方便通过数据库获取唯一的增长序列满足业务需求,模拟oracle序列完成序列获取方案:为了达到oracle序列的效果,在mysql创建函数来完成模拟 ...

  3. oracle与mysql创建表时的区别

    oracle创建表时,不支持在建表时同时增加字段注释.故采用以下方式: #创建表 CREATE TABLE predict_data as (id integer NOT NULL, uid varc ...

  4. MySQL留言板怎么创建_如何使用JSP+MySQL创建留言本(三)

    如何使用JSP+MySQL创建留言本(三)推荐查看本文HTML版本 下面我们开始建立留言的页面! import ="java.util.*" import ="jav ...

  5. mysql创建库几种方法_MySQL创建数据库的两种方法

    本文为大家分享了两种mysql创建数据库的方法,供大家参考,具体内容如下 第一种方法:使用 mysqladmin 创建数据库使用普通用户,你可能需要特定的权限来创建或者删除 mysql 数据库. 所以 ...

  6. centos 7 mysql 创建用户_【CentOS 7MySQL常用操作4】,MySQL创建用户以及授权#180116

    hellopasswd MySQL创建用户以及授权 grant all on . to 'user1' identified by 'passwd'; grant SELECT,UPDATE,INSE ...

  7. MySQL 创建数据表

    MySQL 创建数据表 创建MySQL数据表的SQL语法: CREATE TABLE table_name (column_name column_type); 例如,我们在 PENGKE 数据库中创 ...

  8. mysql新建备份在哪里_navicat for MySQL创建备份计划的详细流程

    刚入手navicat for MySQL的用户,不清楚怎么创建备份计划?现在就跟着小编一起来看一下navicat for MySQL创建备份计划的详细流程吧. navicat for MySQL创建备 ...

  9. MySQL创建数据库时指定编码和用户授权

    为什么80%的码农都做不了架构师?>>>    MySQL创建数据库时指定编码和用户授权 转载于:https://my.oschina.net/michao/blog/2989144

最新文章

  1. windows下编译pcl-master源码(带GPU)
  2. 游戏开发:js实现简单的板球游戏
  3. Ubuntu下嵌入式Qt开发环境配置全攻略
  4. 中国首个海底数据中心样机测试数据揭晓,达世界先进能效水平
  5. @Resource,@Autowired,@Inject3种注入方式详解
  6. TCP、UDP套接字的数据传输
  7. 让VMware由bios启动方式,转而支持EFI启动方式
  8. 《零基础入门学习Python》学习过程笔记【016列表,元组,字符串的转化及共用技巧】...
  9. php sorcket_深入浅出讲解:php的socket通信
  10. function core.php is missing,PHP代码
  11. 美国密歇根州立大学计算机专业,密歇根州立大学计算机科学硕士排名第66(2020年TFE Times排名)...
  12. ERD Online介绍
  13. cadence软件安装教程
  14. 这届90后女博士,对30岁不屑一顾
  15. python中简述对象和类的关系_Python笔记-习题42 对象、类及从属关系
  16. 英文学习20180321
  17. 《ERROR: MobSDK已停止支持非严格模式版本,请按上面编译告示接入合规版本》
  18. 如何基于Arduino开发板使用APDS9960 RGB和手势传感器
  19. 链接脚本(Linker Scripts)语法和规则解析(翻译自官方手册)
  20. 软件工程 -- E-R图

热门文章

  1. 进入Docker容器中修改mysql密码
  2. matlab怎么把音频变成信号_如何使用 MATLAB 实现音频信号处理、实验仿真?
  3. viewport概念
  4. 爬取BBC评选21世纪电影TOP100
  5. 在spring官网上下载spring的jar包及API文档
  6. 基于Java、JSP的网上招聘系统的设计和实现
  7. glPushMatrix()
  8. 常用工业以太网协议性能及应用
  9. java连点方法,多线程实现按钮连续点击
  10. hive 插入数据映射到hbase_hive建表映射到hbase