天天看點

開發指南—Sequence—顯示用法—修改Sequence

PolarDB-X支援對Sequence的各種類型進行如下修改:

  • 修改Simple Sequence的參數:起始值、步長、最大值、循環或非循環。
  • 修改Group Sequence或單元化 Group Sequence的參數:起始值。
  • 不同類型Sequence間的轉換(單元化Group Sequence除外)。

注意事項

在對Sequence的類型進行修改時,您需要注意如下事項:

  • Group Sequence和單元化Group Sequence是非連續的。START WITH參數對于它們僅具有指導意義,Group Sequence和單元化Group Sequence不會嚴格按照該參數作為起始值,但是保證起始值比該參數大。
  • 單元化Group Sequence不支援轉換到其它類型或修改單元化相關的參數。
  • 對于Simple Sequence,如果修改Sequence時指定了START WITH,則會立即生效,下次取Sequence值時會從新的START WITH值開始。比如原先Sequene增長到100,這時把START WITH值改成了200,那麼下一次擷取的Sequence值就從200開始。
  • 修改START WITH的參數值時,需要仔細評估已經産生的Sequence值,以及生成新Sequence值的速度,防止産生沖突。如非必要,請謹慎修改START WITH參數值。

Group Sequence

文法

ALTER SEQUENCE <name> [ CHANGE TO SIMPLE | TIME ]
START WITH <numeric value>
[ INCREMENT BY <numeric value> ]
[ MAXVALUE <numeric value> ]
[ CYCLE | NOCYCLE ]      

參數說明

參數 說明
START WITH Sequence的起始值,無預設值,若未指定則忽略該參數,在轉換類型時必須指定。
INCREMENT BY 僅在将Group Sequence轉換為Simple Sequence時有效,是Simple Sequence每次增長時的增量值(或稱為間隔值或步長),若未指定,則預設值為1。
MAXVALUE 僅在将Group Sequence轉換為Simple Sequence時有效,是Simple Sequence允許的最大值,若未指定,則預設值為有符号長整型(Signed BIGINT)的最大值,即9223372036854775807。
CYCLE 或 NOCYCLE 僅在将Group Sequence轉換為Simple Sequence時有效,兩者隻能選擇其一,代表當Simple Sequence值增長到最大值後,是否允許繼續循環(即從START WITH重新開始)使用該Simple Sequence,若未指定,則預設值為NOCYCLE。

說明 當修改的目标類型為TIME時,不支援上述參數。

單元化Group Sequence

ALTER SEQUENCE <name> 
START WITH <numeric value>      
單元化Group Sequence的起始值,無預設值,若未指定則忽略該參數。

說明 單元化Group Sequence 不支援轉換到其它類型或修改單元化相關的參數。

Time-based Sequence

ALTER SEQUENCE <name>[ CHANGE TO GROUP | SIMPLE ]
START WITH <numeric value>
[ INCREMENT BY <numeric value> ]
[ MAXVALUE <numeric value> ]
[ CYCLE | NOCYCLE ]      
Simple Sequence每次增長時的增量值(或稱為間隔值或步長),若未指定,則預設值為1,将Simple Sequence轉換為Group Sequence時該參數無效。
Simple Sequence允許的最大值,若未指定,則預設值為有符号長整型(Signed BIGINT)的最大值,即9223372036854775807,将Simple Sequence轉換為Group Sequence時該參數無效。
CYCLE或NOCYCLE 兩者隻能選擇其一,代表當Simple Sequence值增長到最大值後,是否允許繼續循環(即仍從START WITH開始)使用該Simple Sequence,若未指定,則預設值為NOCYCLE,将Simple Sequence轉換為Group Sequence時該參數無效。

Simple Sequence

ALTER SEQUENCE <name> [ CHANGE TO GROUP | TIME ]
START WITH <numeric value>
[ INCREMENT BY <numeric value> ]
[ MAXVALUE <numeric value> ]
[ CYCLE | NOCYCLE ]      

不同類型Sequence間的轉換

在對Sequence的不同類型進行轉換時,您需要了解如下事項:

  • 通過

    ALTER SEQUENCE

    CHANGE TO

    子句實作。
  • ALTER SEQUENCE

    如果指定了

    CHANGE TO

    子句,則強制必須加上START WITH參數,避免忘記指定起始值而造成取值時得到重複值;若沒有CHANGE TO(可選參數),則不強制。
  • 不支援單元化Group Sequence作為源或目标的類型轉換。

示例

  • 将Simple Sequence seq4的起始值改為3000,步長改為5,最大值改為1000000,增長到最大值後改為繼續循環。語句如下:
mysql> ALTER SEQUENCE seq4 START WITH 3000 INCREMENT BY 5 MAXVALUE 1000000 CYCLE;      
  • 将Group Sequence轉換為Simple Sequence。
mysql> ALTER SEQUENCE seq1 CHANGE TO SIMPLE START WITH 1000000;      

繼續閱讀