Scroll to navigation

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

NAME

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

SYNOPSIS

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

DESCRIPTION 描述

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

PARAMETERS 參數

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, 那麼將沿用原有的循環行為。

EXAMPLES 例子


從 105 開始重新開始一個叫 serial 的序列:
 
ALTER SEQUENCE serial RESTART WITH 105;
 

NOTES 注意


為了避免並發的事務從同一個序列獲取數值的時候被阻塞住,ALTER SEQUENCE 操作從來不會回滾; 修改馬上生效並且不能恢復。
ALTER SEQUENCE 將不會立即影響後端的 nextval 結果,除了當前的之外, 因為它又已經緩沖了的序列號。它們只有再使用光所有已經緩沖的數值之後才能意識到改變了的序列參數。當前後端將立即被影響。

COMPATIBILITY 相容性

SQL99

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

譯者

Postgresql 中文網站 何偉平 <laser@pgsqldb.org>
2003-11-02 SQL - Language Statements