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

序列

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

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

如果参数MigSupportSequence设为true(默认值),则在PUBLIC模式中创建序列。

说明:
  • CACHE和ORDER参数不支持迁移。
  • Oracle中,序列的MAXVALUE最大可设为999999999999999999999999999。DWS,MAXVALUE最大可设为9223372036854775807。
  • 在使用此功能之前,请复制custom_scripts.sql文件的内容,并在要执行迁移的所有目标数据库中执行此脚本。详情请参见自定义数据库配置迁移流程

序列

输入:CREATE SEQUENCE

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

输出

INSERT
     INTO
          PUBLIC.MIG_SEQ_TABLE (
               SCHEMA_NAME
               ,SEQUENCE_NAME
               ,START_WITH
               ,INCREMENT_BY
               ,MIN_VALUE
               ,MAX_VALUE
               ,CYCLE_I
               ,CACHE
               ,ORDER_I
          )
     VALUES (
          UPPER( current_schema ( ) )
          ,UPPER( 'GROUP_DEF_SEQUENCE' )
          ,1152
          ,1
          ,1
          ,9223372036854775807
          ,FALSE
          ,20
          ,FALSE
     )
;

使用SEQUENCE和NOCACHE

输入:SEQUENCE和NOCACHE

CREATE SEQUENCE customers_seq
 START WITH 1000
 INCREMENT BY   1
 NOCACHE
 NOCYCLE;

输出

INSERT
     INTO
          PUBLIC.MIG_SEQ_TABLE (
               SCHEMA_NAME
               ,SEQUENCE_NAME
               ,START_WITH
               ,INCREMENT_BY
               ,MIN_VALUE
               ,MAX_VALUE
               ,CYCLE_I
               ,CACHE
               ,ORDER_I
          )
     VALUES (
          UPPER( current_schema ( ) )
          ,UPPER( 'customers_seq' )
          ,1000
          ,1
          ,1
          ,999999999999999999999999999
          ,FALSE
          ,20
          ,FALSE
     )
;

使用CREATE SEQUENCE并指定模式名

输入:CREATE SEQUENCE和模式名

CREATE SEQUENCE scott.seq_customers
 START WITH 1000 INCREMENT BY 1
 MINVALUE 1000 MAXVALUE 999999999999999
 CACHE 20 CYCLE ORDER;

输出

INSERT
     INTO
          PUBLIC.MIG_SEQ_TABLE (
               SCHEMA_NAME
               ,SEQUENCE_NAME
               ,START_WITH
               ,INCREMENT_BY
               ,MIN_VALUE
               ,MAX_VALUE
               ,CYCLE_I
               ,CACHE
               ,ORDER_I
          )
     VALUES (
          UPPER( 'scott' )
          ,UPPER( 'seq_customers' )
          ,1000
          ,1
          ,1000
          ,999999999999999
          ,TRUE
          ,20
          ,FALSE
     )
;

使用CREATE SEQUENCE并使用默认值

输入:SEQUENCE默认值

CREATE SEQUENCE seq_orders;

输出

INSERT
     INTO
          PUBLIC.MIG_SEQ_TABLE (
               SCHEMA_NAME
               ,SEQUENCE_NAME
               ,START_WITH
               ,INCREMENT_BY
               ,MIN_VALUE
               ,MAX_VALUE
               ,CYCLE_I
               ,CACHE
               ,ORDER_I
          )
     VALUES (
          UPPER( current_schema ( ) )
          ,UPPER( 'seq_orders' )
          ,1
          ,1
          ,1
          ,999999999999999999999999999
          ,FALSE
          ,20
          ,FALSE
     )
;

NEXTVAL

要迁移NEXTVAL,用户可使用自定义函数,根据increment_by、max_value、min_value和cycle生成下一个值。在安装过程中,需在要执行迁移的所有数据库中创建该函数。

该函数支持DWS所有版本。

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

说明:

将参数MigSupportSequence设为true,可将NEXTVAL迁移为PUBLIC.NEXTVAL('[schema].sequence')。

将参数MigSupportSequence设为false,可将NEXTVAL迁移为NEXTVAL('[schema].sequence')。

在使用此功能之前,请复制custom_scripts.sql文件的内容,并在要执行迁移的所有目标数据库中执行此脚本。详情请参见自定义数据库配置迁移流程

输入:NEXTVAL

[schema.]sequence.NEXTVAL

输出

PUBLIC.nextval('[schema.]sequence')

输入:NEXTVAL

SELECT
          EMP_ID_SEQ.NEXTVAL INTO
               SEQ_NUM
          FROM
               dual
;

输出

SELECT
          PUBLIC.NEXTVAL ('EMP_ID_SEQ') INTO
               SEQ_NUM
          FROM
               dual
;

CURRVAL

要迁移CURRVAL,用户可使用自定义函数,获取最近返回的下一个值作为当前值。在安装过程中,需在要执行迁移的所有数据库中创建该函数。

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

说明:

将参数MigSupportSequence设为true,可将CURRVAL迁移为PUBLIC.CURRVAL('[schema].sequence')。

将参数MigSupportSequence设为false,可将CURRVAL迁移为CURRVAL('[schema].sequence')。

在使用此功能之前,请复制custom_scripts.sql文件的内容,并在要执行迁移的所有目标数据库中执行此脚本。详情请参见自定义数据库配置迁移流程

输入:CURRVAL

[schema.]sequence.CURRVAL

输出

currval('[schema.]sequence')

输入:CURRVAL

INSERT
     INTO
          Line_items_tab (
               Orderno
               ,Partno
               ,Quantity
          )
     VALUES (
          Order_seq.CURRVAL
          ,20321
          ,3
     )
;

输出

INSERT
     INTO
          Line_items_tab (
               Orderno
               ,Partno
               ,Quantity
          ) SELECT
                    PUBLIC.CURRVAL ('Order_seq')
                    ,20321
                    ,3
;
分享:

    相关文档

    相关产品

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

提交成功!

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

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

*必选

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

字符长度不能超过200

提交反馈 取消

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

跳转到云社区