概述
众所周知,Oracle一般使用序列(Sequence)来处理主键字段,而MySQL则提供了自增长(increment)来实现类似的目的。
不过小编在实际使用过程中发现,MySQL的自增长有诸多的弊端:不能控制步长、开始索引、是否循环等;若需要oracle迁移数据库到mysql,主键方面还是不太好处理。
oracle序列
先介绍下oracle序列方面的内容,在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方或者在实际开发中,比如一个需求表格中的需求ID是唯一主键,都可以用sequence来获取。
首先在用Oracle序列号之前,我们首先得创建一个序列然后就可以通过CURRY、NEXTVAL,获取当前表中的返回sequence的当前值、下一个squence的值。可以通过下面的语句来创建Squence:
create sequence INR_REQUIRMENT_SQUENCE INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXVALUE -- 不设置最大值 NOCYCLE -- 一直累加,不循环 CACHE 10;
Oracle序列的使用,实际上是使用.nextval和.currval伪列。
mysql模拟Oracle序列的方案
Oracle序列的使用,实际上是使用.nextval和.currval伪列,这里我们的思路是:
1、MySQL中新建表并定义一张表sequence,每一行记录就可以作为一