ALTER SEQUENCE - Amazon Aurora DSQL

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

ALTER SEQUENCE

ALTER SEQUENCE — 變更序列產生器的定義。

重要

使用序列時,應仔細考慮快取值。如需詳細資訊,請參閱 CREATE SEQUENCE 頁面上的重要標註。

如需如何根據工作負載模式以最佳方式使用序列的指引,請參閱 使用序列和身分資料欄

支援的語法

ALTER SEQUENCE [ IF EXISTS ] name [ INCREMENT [ BY ] increment ] [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ] [ [ NO ] CYCLE ] [ START [ WITH ] start ] [ RESTART [ [ WITH ] restart ] ] [ CACHE cache ] [ OWNED BY { table_name.column_name | NONE } ] ALTER SEQUENCE [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER SEQUENCE [ IF EXISTS ] name RENAME TO new_name ALTER SEQUENCE [ IF EXISTS ] name SET SCHEMA new_schema where cache is 1 or cache >= 65536

Description

ALTER SEQUENCE 會變更現有序列產生器的參數。ALTER SEQUENCE 命令中未特別設定的任何參數都會保留其先前的設定。

您必須擁有序列才能使用 ALTER SEQUENCE。若要變更序列的結構描述,您還必須具有新結構描述CREATE的權限。若要更改擁有者,您必須能夠SET ROLE使用新的擁有角色,且該角色必須具有序列結構描述CREATE的權限。(這些限制會強制變更擁有者不會執行您捨棄並重新建立序列而無法執行的任何動作。 不過,超級使用者可以改變任何序列的擁有權。)

Parameters

name

要變更之序列的名稱 (選擇性符合結構描述資格)。

IF EXISTS

如果序列不存在,請勿擲回錯誤。在此情況下會發出通知。

增量

子句INCREMENT BY increment是選用的。正值將使遞增序列,負值將遞減序列。如果未指定,則會維持舊的增量值。

minvalue / NO MINVALUE

選用子句MINVALUE minvalue決定序列可以產生的最小值。如果NO MINVALUE指定 ,則會分別使用 1 的預設值和遞增和遞減序列的資料類型最小值。如果未指定任何選項,則會維持目前的最小值。

maxvalue / NO MAXVALUE

選用子句MAXVALUE maxvalue決定序列的最大值。如果NO MAXVALUE指定 ,則會分別使用資料類型的最大值預設值和遞增和遞減序列的 -1。如果未指定任何選項,則會維持目前的最大值。

CYCLE

當遞增或遞減序列分別達到最大值最小值時,選用CYCLE的關鍵字可用來讓序列包裝。如果達到限制,產生的下一個數字將分別是最小值最大值

NO CYCLE

如果指定選用NO CYCLE關鍵字,則在序列達到其最大值nextval之後對 的任何呼叫都會傳回錯誤。如果未指定 CYCLENO CYCLE ,則會維持舊的週期行為。

start

選用子句會START WITH start變更序列的記錄開始值。這不會影響目前的序列值;它只會設定未來ALTER SEQUENCE RESTART命令將使用的值。

重新啟動

選用子句會RESTART [ WITH restart ]變更序列的目前值。這類似於使用 is_called = 呼叫 setval函數false:下次呼叫 會傳回指定的值nextval。沒有重新啟動RESTART的寫入相當於提供由 記錄的開始值CREATE SEQUENCE,或由 上次設定ALTER SEQUENCE START WITH

setval呼叫相反,序列上的RESTART操作是交易的,並封鎖並行交易從相同序列取得數字。如果這不是所需的操作模式,setval則應使用 。

快取

子句CACHE cache可讓序號預先配置並存放在記憶體中,以加快存取速度。值必須為 1 或某個值 >= 65536。如果未指定,則會保留舊快取值。如需快取行為的詳細資訊,請參閱 下的指引CREATE SEQUENCE

OWNED BY table_name.column_name / OWNED BY NONE

OWNED BY 選項會導致序列與特定資料表資料欄相關聯,因此如果捨棄該資料欄 (或其整個資料表),序列也會自動捨棄。如果指定,此關聯會取代先前為序列指定的任何關聯。指定的資料表必須具有相同的擁有者,且與序列位於相同的結構描述中。指定 會OWNED BY NONE移除任何現有的關聯,使序列「獨立」。

new_owner

序列新擁有者的使用者名稱。

new_name

序列的新名稱。

new_schema

序列的新結構描述。

備註

ALTER SEQUENCE 除了目前已預先配置 (快取) 序列值的後端之外, 不會立即影響後端nextval的結果。在注意到已變更的序列產生參數之前,他們會先用完所有快取的值。目前的後端會立即受到影響。

ALTER SEQUENCE 不會影響序列currval的狀態。

ALTER SEQUENCE 可能會導致其他交易進入 OCC。

基於歷史原因, 也可以與序列ALTER TABLE搭配使用;但唯一允許與序列搭配使用ALTER TABLE的變體等同於上述表單。

範例

在 105 serial重新啟動名為 的序列:

ALTER SEQUENCE serial RESTART WITH 105;

相容性

ALTER SEQUENCE 符合 SQL 標準,但 AS、、RENAME TO、、 START WITH OWNED BY OWNER TOSET SCHEMA子句除外,其為 PostgreSQL 擴充功能。