南大通用GBase8s 常用SQL語句(十五)

zhangyuanying發表於2021-10-27

南大通用GBase8s 常用SQL語句(十五)

1.1  ALTER SEQUENCE 語句

使用 ALTER SEQUENCE   句修改序列物件的定義。該語句是 SQL ANSI/ISO 標準的擴充套件。

語法

 

元素

描述

限制

語法

max  

值的新上限

必須為 > CURRVAL   restart   的整數

精確數值  

min  

值的新下限

必須為 < CURRVAL   restart   的整數

精確數值  

owner  

sequence   的所有者

不能被此語句更改

所有者名稱  

restart  

序列中新的第一個值

必須是在 INT8 範圍內的整數

精確數值  

sequence  

現有序列的名稱

必須存在。不能是同義詞

識別符號  

size  

記憶體中要預分配的值的新數目

大於 > 2 但 < 一個迴圈中的基數(= |( max  - min )/ step |)

精確數值  

step  

連續值之間的新的間隔

必須是非零整數

精確數值  

用法

ALTER SEQUENCE 語句可以修改 syssequences   系統目錄表中指定的序列物件的定義。

ALTER SEQUENCE 重新定義了現有的序列物件。它隻影響隨後生成的值(和序列快取記憶體中任何未使用的值)。您不能使用 ALTER SEQUENCE 語句重新命名序列,也不能更改序列的所有者。

要修改一個序列的定義,您必須是其所有者或 DBA 或具有對該序列的 Alter 許可權。只會修改您在 ALTER SEQUENCE 語句中顯式指定的序列定義的元素。如果您做出矛盾的更改(例如同時指定 MAXVALUE NOMAXVALUE ,或同時指定 CYCLE NOCYCLE 選項),則會發生錯誤。

示例

以下示例基於隨後的序列物件和表:

CREATE SEQUENCE seq_2

   INCREMENT BY 1 START WITH 1

   MAXVALUE 30 MINVALUE 0

   NOCYCLE CACHE 10 ORDER;

 

CREATE TABLE tab1 (col1 int, col2 int);

INSERT INTO tab1 VALUES (0, 0);

 

INSERT INTO tab1 (col1, col2) VALUES (seq_2.NEXTVAL, seq_2.NEXTVAL)

 

 

SELECT * FROM tab1;

 

       col1        col2

        0           0

        1           1

 

 

ALTER SEQUENCE seq_2

   RESTART WITH 5

   INCREMENT by 2

   MAXVALUE 300;

 

INSERT INTO tab1 (col1, col2) VALUES (seq_2.NEXTVAL, seq_2.NEXTVAL)

INSERT INTO tab1 (col1, col2) VALUES (seq_2.NEXTVAL, seq_2.NEXTVAL)

SELECT * FROM tab1;

 

        col1        col2

          0           0

          1           1

          5           5

          7           7

INCREMENT BY 選項

使用 INCREMENT BY 選項指定一個序列中連續數字之間的新間隔。間隔(或 step   值)可以 INT8 範圍內的一個正整數(對遞增順序)或負整數(對遞減順序) 。 BY 關鍵字是可選的。

RESTART WITH 選項

使用 RESTART WITH 選項指定該序列的新的第一個數字。如果使用 ALTER SEQUENCE 語句指定了 min   max   值,則 restart 值必須是 INT8 範圍內的整數,它大於等於 min   值(對於遞增順序),或小於等於 max   值(對於遞減順序)。 WITH 關鍵字是可選的。

當您使用 RESTART 選項修改序列時, restart   值儲存在 syssequences   系統目錄表中,直到 NEXTVAL   操作中第一次使用該序列物件。在此以後,該值就在系統目錄中復位。使用 dbschema   實用程式可以遞增資料庫中的序列物件,從而在生成的數字中產生間隔,您可能不希望這些數字在需要序列化整數的應用程式中出現。

MAXVALUE NOMAXVALUE 選項

使用 MAXVALUE 選項指定序列中值的新的上限。最大值(或 max   )必須是 INT8 範圍內的整數,它大於 sequence .CURRVAL   restart   (或者,如果未指定 restart   ,則大於原 CREATE SEQUENCE 語句中的 origin )。

使用 NOMAXVALUE 選項,以用新的預設最大值(對遞增順序為 2e64 ;對遞減順序為 -1 )替換當前的限制值。

MINVALUE NOMINVALUE 選項

使用 MINVALUE 選項指定序列中值的新下限。最小值(或 min )必須是 INT8 範圍內的整數,它小於 sequence .CURRVAL   restart   (或者,如果未指定 restart   ,則小於原 CREATE SEQUENCE 語句中的 origin )。

使用 NOMINVALUE 選項以用預設值(對於遞增順序為 1 ;對於遞減順序為 -(2e64) )替換當前下限。

CYCLE NOCYCLE 選項

使用 CYCLE 選項替換 NOCYCLE 屬性,在序列到達最大(升序)或最小(降序)限制值後繼續生產序列值。在遞增順序到達 max   後,它為下一個值生產 min   值。在遞減順序到達 min   後,它為下一個值生產 max   值。

使用 NOCYCLE 選項可防止序列在到達宣告的限制值之後生成更多的值。一旦序列到達該限制值,對 sequence .NEXTVAL   的下一次引用將返回一條錯誤訊息。

CACHE NOCACHE 選項

使用 CACHE 選項指定在記憶體中預分配以快速訪問的序列值的新數目。快取記憶體大小必須是在 INT 範圍內的整數,它小於迴圈中的個數(或小於 (| max  - min )/ step | )。最小大小為 2   個預分配的值。

使用 NOCACHE 在記憶體中不預分配值。(另見 CREATE SEQUENCE 語句   中有關 SEQ_CACHE_SIZE 的描述。 )

ORDER NOORDER 選項

這些關鍵字對序列的行為沒有影響。序列始終以使用者請求的順序向使用者發出值,就像 ORDER 關鍵字是始終指定的一樣。但是, ALTER SEQUENCE 語句接受 ORDER NOORDER 關鍵字,以同在 SQL 的其它方言中序列物件的實現相相容。

 

 

GBASE 官網:

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70009077/viewspace-2839480/,如需轉載,請註明出處,否則將追究法律責任。

相關文章