文档首页 > > 工具指南> Migration Tool SQL语法迁移工具> Oracle(Beta)语法迁移> 模式对象> 序列

序列

分享
更新时间: 2019/08/09 GMT+08:00

SEQUENCE是Oracle对象,用于创建数字序列。该序列用于处理自动编号字段,并创建唯一的数字,可用作主键。

使用maxValInSequence参数设置序列中支持的最大值。

说明:

如果输入序列的最大值大于maxValInSequence参数的配置最大值,则在迁移脚本中会使用配置的最大值替换输入的最大值。

SEQUENCE

输入:SEQUENCE

CREATE SEQUENCE GROUP_DEF_SEQUENCE 
 minvalue 1 
 maxvalue 100000000000000000000 
 start with 1152 
 increment by 1 
 cache 50;

输出( maxValInSequence =1000000)

CREATE SEQUENCE GROUP_DEF_SEQUENCE 
 minvalue 1 
 maxvalue 1000000 
 start with 1152 
 increment by 1 
 cache 50;

输入:SEQUENCE和ORDER

CREATE SEQUENCE GROUP_DEF_SEQUENCE 
 minvalue 1 maxvalue 1000 start WITH 11 increment BY 1 cache 50 order;

输出

CREATE SEQUENCE GROUP_DEF_SEQUENCE 
 minvalue 1 maxvalue 1000 start WITH 11 increment BY 1 cache 50 /*order*/;

输入:SEQUENCENOCACHE

CREATE SEQUENCE GROUP_DEF_SEQUENCE 
 minvalue 1 maxvalue 9223372036854775807 start WITH 11 increment BY 1 nocache;

输出

CREATE SEQUENCE GROUP_DEF_SEQUENCE 
 minvalue 1 maxvalue 9223372036854775807 start WITH 11 increment BY 1 /*nocache*/;

ALTER SEQUENCE

Oracle中使用ALTER SEQUENCE来更改增量值、最小值和最大值、缓存的序列数以及序列的行为。工具会在迁移脚本中注释掉ALTER SEQUENCE语句。

输入:ALTER SEQUENCE

ALTER SEQUENCE customers_seq MAXVALUE 1500;

输出

/*ALTER SEQUENCE customers_seq MAXVALUE 1500;*/

NEXTVAL

NEXTVAL是Oracle系统函数,DWS不隐式支持该函数。为了支持该函数,Migration Tool会在PUBLIC模式中创建一个NEXTVAL函数。迁移后的语句会使用该PUBLIC.NEXTVAL函数。

输入:SEQUENCE和NEXTVAL

"SELECT    'X'    || TO_CHAR (SYSDATE, 'yyyymmdd')
             || LPAD (SEQ_SPMS_SYSSOFT_ASSETS_ID.nextval, '6', '0')
           INTO O_SOFTASSETS_ID
           FROM DUAL;"

输出

"SELECT  'X' || TO_CHAR( SYSDATE ,'yyyymmdd' ) 
|| LPAD( nextval ( 'SEQ_SPMS_SYSSOFT_ASSETS_ID' ) ,'6' ,'0' )
INTO O_SOFTASSETS_ID
                    FROM DUAL ;
"

CURRVAL

CURRVAL是Oracle系统函数,DWS不隐式支持该函数。为了支持该函数,Migration Tool会在PUBLIC模式中创建一个CURRVAL函数。迁移后的语句会使用该PUBLIC.CURRVAL函数。

输入:SEQUENCE和CURRVAL

CREATE SEQUENCE temp_seq minvalue 1 maxvalue 100 start WITH 11 increment BY 1 cache 50;
CREATE TABLE temp
(
    id INTEGER PRIMARY KEY,
    value INTEGER DEFAULT temp_seq.currval
);

输出

CREATE SEQUENCE temp_seq minvalue 1 maxvalue 100 start WITH 11 increment BY 1 cache 50;
CREATE TABLE temp
(
    id INTEGER PRIMARY KEY,
    value INTEGER DEFAULT CURRVAL('temp_seq')
);
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区