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 引數


一個要修改的序列的名字(可以有模式修飾)。
INCREMENT BY increment 子句是可選的。一個正數會讓序列成為遞增序列,負數則成為遞減序列。 如果沒有宣告,將沿用原來的遞增值。

可選的子句 MINVALUE minvalue 決定一個序列可以生成的最小的值。如果聲明瞭 NO MINVALUE,將使用預設值, 對於遞增和遞減的序列分別是 1 和 -2^63-1。如果沒有宣告任何選項,則沿用當前的最小值。

可選的子句 MAXVALUE maxvalue 決定序列的最大值。如果聲明瞭 NO MAXVALUE,則使用預設值,對於遞增和遞減的序列分別是 2^63-1 和 -1。如果兩個選項都沒有宣告, 則沿用當前的最大值。

可選的 RESTART WITH start 子句允許序列可以在任何地方開始。
CACHE cache 選項開啟序列號預分配並存儲在記憶體緩衝的功能。最小值是 1 (也就是每次只能生成一個數值,沒有緩衝)。 如果沒有宣告,將沿用舊的緩衝值。

可選的鍵字 CYCLE 可以用於允許序列在達到遞增序列的 maxvalue 或者遞減序列的 minvalue的時候重疊使用。 如果達到了極限,那麼生成的下一個數字將分別是 minvaluemaxvalue

如果聲明瞭可選鍵字 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>

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

2003-11-02 SQL - Language Statements