`

获取 Oracle、DB2、PostgreSQL的Sequence

阅读更多

一、定义Sequence

定义一个seq_test,最小值为10000,最大值为99999999999999999,从20000开始,增量的步长为1,缓存为20的循环排序Sequence。

Oracle的定义方法:
create sequence seq_test
minvalue 10000
maxvalue 99999999999999999
start with 20000
increment by 1
cache 20
cycle
order;


DB2的写法:
create sequence seq_test
    as bigint
    start with 20000
    increment by 1
    minvalue 10000
    maxvalue 99999999999999999
    cycle
    cache 20
    order;


PostgreSQL的写法:
create sequence seq_test
    increment by 1
    minvalue 10000
    maxvalue 99999999999999999
    start 20000
    cache 20
    cycle;

二、Oracle、DB2、PostgreSQL数据库Sequence值的引用参数为:currval、nextval,分别表示当前值和下一个值。下面分别从三个数据库的Sequence中获取nextval的值。

Oracle中:seq_test.nextval
例如:select seq_test.nextval from dual;

DB2中:nextval for seq_test
例如:values nextval for seq_test;

PostgreSQL中:nextval(seq_test)
例如:select nextval(seq_test);


三、Sequence与indentity的区别与联系

Sequence与indentity的基本作用都差不多。都可以生成自增数字序列。
Sequence是数据库系统中的一个对象,可以在整个数据库中使用,和表没有任何关系;indentity仅仅是指定在表中某一列上,作用范围就是这个表。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics