oracle 中不像mysql和mssqlserver中那样指定一个列为自动增长列的方式,不过在oracle 中可以通过sequence序列来实现自动增长字段
环境:plsql developer 7.1.5 oracle 11.2.0
oracle 中不像mysql和mssqlserver中那样指定一个列为自动增长列的方式,,不过在oracle 中可以通过sequence序列来实现自动增长字段。在oracle 中sequence被称为序列,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。
在使用sequence前需要首先定义一个sequence,定义sequence的语法如下:
其中sequence_name为序列的名字,每个序列都必须有唯一的名字;startvalue参数值为起始数字,step参数值为步长,即每次自动增长时增加的值。一旦定义了sequence,你就可以用currval来取得sequence的当前值,也可以通过nextval来增加sequence,然后返回 新的sequence值。比如:
如果sequence不需要的话就可以将其删除:
drop sequence sequence_name;
下面举一个使用sequence序列实现自动增长的例子。首先创建一个名称为seq_personid 的sequence:
注:如果没加这句(minvalue 0),可能会出现这个错误(ora-04006: start with 不能小于 minvalue)。解决方法就是指定最小值。
然后创建t_person表:
执行上面的sql语句后就创建成功了t_person表,然后执行下面的sql语句向t_person表中插入一些数据: