Arch manual pages

ALTER SEQUENCE(7) SQL Commands ALTER SEQUENCE(7)

ALTER SEQUENCE - 更改一個序列生成器的定義

ALTER SEQUENCE name [ INCREMENT [ BY ] increment ]
    [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
    [ RESTART [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]
  

ALTER SEQUENCE 命令修改一個現有的序列發生器的參數。 任何沒有明確在 ALTER SEQUENCE 命令裏聲明的參數都將保留原先的設置。

name
一個要修改的序列的名字(可以有模式修飾)。
increment
INCREMENT BY increment 子句是可選的。一個正數會讓序列成爲遞增序列,負數則成爲遞減序列。 如果沒有聲明,將沿用原來的遞增值。
minvalue
NO MINVALUE
可選的子句 MINVALUE minvalue 決定一個序列可以生成的最小的值。如果聲明瞭 NO MINVALUE,將使用缺省值, 對於遞增和遞減的序列分別是 1 和 -2^63-1。如果沒有聲明任何選項,則沿用當前的最小值。
maxvalue
NO MAXVALUE
可選的子句 MAXVALUE maxvalue 決定序列的最大值。如果聲明瞭 NO MAXVALUE,則使用缺省值,對於遞增和遞減的序列分別是 2^63-1 和 -1。如果兩個選項都沒有聲明, 則沿用當前的最大值。
start
可選的 RESTART WITH start 子句允許序列可以在任何地方開始。
cache
CACHE cache 選項打開序列號預分配並存儲在內存緩衝的功能。最小值是 1 (也就是每次只能生成一個數值,沒有緩衝)。 如果沒有聲明,將沿用舊的緩衝值。
CYCLE
可選的鍵字 CYCLE 可以用於允許序列在達到遞增序列的 maxvalue 或者遞減序列的 minvalue的時候重疊使用。 如果達到了極限,那麼生成的下一個數字將分別是 minvaluemaxvalue
NO CYCLE
如果聲明瞭可選鍵字 NO CYCLE,任何在序列達到其最大極限後對 nextval 的調用都將返回錯誤。 如果既未聲明 CYCLE 也未聲明 NO CYCLE, 那麼將沿用原有的循環行爲。

從 105 開始重新開始一個叫 serial 的序列:

ALTER SEQUENCE serial RESTART WITH 105;

爲了避免併發的事務從同一個序列獲取數值的時候被阻塞住,ALTER SEQUENCE 操作從來不會回滾; 修改馬上生效並且不能恢復。

ALTER SEQUENCE 將不會立即影響後端的 nextval 結果,除了當前的之外, 因爲它又已經緩衝了的序列號。它們只有再使用光所有已經緩衝的數值之後才能意識到改變了的序列參數。當前後端將立即被影響。

ALTER SEQUENCE 是 PostgreSQL 語言擴展。在 SQL99 裏沒有 ALTER SEQUENCE 語句。

Postgresql 中文網站 何偉平 <laser@pgsqldb.org>

本頁面中文版由中文 man 手冊頁計劃提供。
中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh
2003-11-02 SQL - Language Statements