本文主要介紹如何修改Sequence的起始值和轉(zhuǎn)換類型(單元化的Group Sequence除外)。

注意事項(xiàng)

在對(duì)Sequence的類型進(jìn)行修改時(shí),您需要注意如下事項(xiàng):

  • 當(dāng)Group Sequence為大于一個(gè)單元的單元化Group Sequence時(shí),不支持轉(zhuǎn)換到其它類型或修改單元化相關(guān)的參數(shù),強(qiáng)行轉(zhuǎn)換可能會(huì)導(dǎo)致Sequence無(wú)法正常工作。
  • 修改START WITH參數(shù)的值時(shí),需要仔細(xì)評(píng)估已經(jīng)產(chǎn)生的Sequence值,以及生成新Sequence值的速度,防止產(chǎn)生沖突。如非必要,請(qǐng)謹(jǐn)慎修改START WITH參數(shù)值。
  • 通過ALTER SEQUENCE CHANGE TO語(yǔ)句轉(zhuǎn)換Sequence類型時(shí),必須指定START WITH參數(shù)的值,若沒有CHANGE TO子句,則不強(qiáng)制。

New Sequence

語(yǔ)法
ALTER SEQUENCE <name> [ CHANGE TO GROUP | TIME ]
START WITH <numeric value>
[ INCREMENT BY <numeric value> ]
[ MAXVALUE <numeric value> ]
[ CYCLE | NOCYCLE ]
參數(shù)說明
參數(shù)說明
START WITHNew Sequence的起始值,若未指定,則默認(rèn)起始值為1。
INCREMENT BYNew Sequence每次增?時(shí)的增量值(或稱為間隔值、步長(zhǎng)),若未指定,則默認(rèn)值為1。僅在修改New Sequence自身屬性時(shí)支持,轉(zhuǎn)換為Group或Time Sequence則不支持。
MAXVALUENew Sequence允許的最大值,必須為正整數(shù)。若未指定,則默認(rèn)值為有符號(hào)長(zhǎng)整型(Signed BIGINT)的最大值,即9223372036854775807。 僅在修改New Sequence自身屬性時(shí)支持,轉(zhuǎn)換為Group或Time Sequence則不支持。
CYCLE或NOCYCLE兩個(gè)參數(shù)只能選擇其中一個(gè),說明如下:
  • CYCLE:當(dāng)New Sequence的值增長(zhǎng)到最大值后,允許從起始值開始重新循環(huán)。
  • NOCYCLE:當(dāng)New Sequence的值增長(zhǎng)到最大值后,不允許從起始值開始重新循環(huán),再分配會(huì)報(bào)錯(cuò),如果參數(shù)未指定,默認(rèn)為NOCYCLE。

僅在修改New Sequence自身屬性時(shí)支持,轉(zhuǎn)換為Group或Time Sequence則不支持。

說明
  • 轉(zhuǎn)換到Group Sequence時(shí),僅支持默認(rèn)的一個(gè)單元。
  • 轉(zhuǎn)換到Time-based Sequence時(shí),指定起始值無(wú)意義。

Group Sequence

語(yǔ)法
ALTER SEQUENCE <name> [ CHANGE TO NEW | TIME ]
START WITH <numeric value>
[ INCREMENT BY <numeric value> ]
[ MAXVALUE <numeric value> ]
[ CYCLE | NOCYCLE ]
參數(shù)說明
參數(shù)說明
START WITH起始值,若未指定,則默認(rèn)起始值為1。
INCREMENT BYNew Sequence每次增?時(shí)的增量值(或稱為間隔值、步長(zhǎng)),若未指定,則默認(rèn)值為1。僅在轉(zhuǎn)換為New Sequence時(shí)支持。
MAXVALUENew Sequence允許的最大值,必須為正整數(shù)。若未指定,則默認(rèn)值為有符號(hào)長(zhǎng)整型(Signed BIGINT)的最大值,即9223372036854775807。僅在轉(zhuǎn)換為New Sequence時(shí)支持。
CYCLE或NOCYCLE兩個(gè)參數(shù)只能選擇其中一個(gè),僅在轉(zhuǎn)換為New Sequence時(shí)支持。說明如下:
  • CYCLE:當(dāng)Sequence的值增長(zhǎng)到最大值后,允許從起始值開始重新循環(huán)。
  • NOCYCLE:當(dāng)New Sequence的值增長(zhǎng)到最大值后,不允許從起始值開始重新循環(huán),再分配會(huì)報(bào)錯(cuò),如果參數(shù)未指定,默認(rèn)為NOCYCLE。
說明

轉(zhuǎn)換到Time-based Sequence時(shí),指定起始值、步長(zhǎng)、最大值和循環(huán)分配參數(shù)無(wú)意義。

Time-based Sequence

語(yǔ)法
ALTER SEQUENCE <name> [ CHANGE TO NEW | GROUP ]
START WITH <numeric value>
[ INCREMENT BY <numeric value> ]
[ MAXVALUE <numeric value> ]
[ CYCLE | NOCYCLE ]
參數(shù)說明
參數(shù)說明
START WITH起始值,若未指定,則默認(rèn)起始值為1。
INCREMENT BYNew Sequence每次增?時(shí)的增量值(或稱為間隔值、步長(zhǎng)),若未指定,則默認(rèn)值為1。僅在轉(zhuǎn)換為New Sequence時(shí)支持。
MAXVALUENew Sequence允許的最大值,必須為正整數(shù)。若未指定,則默認(rèn)值為有符號(hào)長(zhǎng)整型(Signed BIGINT)的最大值,即9223372036854775807。僅在轉(zhuǎn)換為New Sequence時(shí)支持。
CYCLE或NOCYCLE兩個(gè)參數(shù)只能選擇其中一個(gè),僅在轉(zhuǎn)換為New Sequence時(shí)支持。說明如下:
  • CYCLE:當(dāng)Sequence的值增長(zhǎng)到最大值后,允許從起始值開始重新循環(huán)。
  • NOCYCLE:當(dāng)New Sequence的值增長(zhǎng)到最大值后,不允許從起始值開始重新循環(huán),再分配會(huì)報(bào)錯(cuò),如果參數(shù)未指定,默認(rèn)為NOCYCLE。
說明 轉(zhuǎn)換到Group Sequence時(shí),僅支持默認(rèn)的一個(gè)單元,指定起始值、步長(zhǎng)、最大值和循環(huán)分配參數(shù)無(wú)意義。

示例

  • 修改一個(gè)Sequence的起始值:
    ALTER SEQUENCE seq1 START WITH 1000000;
  • 將一個(gè)Sequence轉(zhuǎn)換為Group Sequence:
    ALTER SEQUENCE seq2 CHANGE TO GROUP START WITH 2000000;
  • 將一個(gè)Sequence轉(zhuǎn)換為Time-based Sequence:
    ALTER SEQUENCE seq3 CHANGE TO TIME;
  • 將一個(gè)Sequence轉(zhuǎn)換為New Sequence,使用默認(rèn)的步長(zhǎng)、最大值、循環(huán)分配參數(shù):
    ALTER SEQUENCE seq4 CHANGE TO NEW START WITH 100;
  • 將一個(gè)Sequence轉(zhuǎn)換為New Sequence,使用自定義的步長(zhǎng)、最大值、循環(huán)分配參數(shù):
    ALTER SEQUENCE seq5 CHANGE TO NEW START WITH 200 INCREMENT BY 2 MAXVALUE 300 NOCYCLE;