説明
このステートメントは、既存のシーケンスの増分値、最小値と最大値、キャッシュ数および動作を変更するために使用されます。対応する操作は、後続のシリアル番号にのみ影響します。
説明
現在のスキーマ内のシーケンスのみを変更できます。また、そのシーケンスに対する ALTER 権限が付与されている必要があります。
構文
ALTER SEQUENCE [schema.]sequence_name
{
RESTART [START WITH integer]
| MINVALUE integer | NOMINVALUE
| MAXVALUE integer | NOMAXVALUE
| INCREMENT BY integer
| CACHE integer | NOCACHE
| ORDER | NOORDER
| CYCLE | NOCYCLE
}
構文
| フィールド | 説明 |
|---|---|
| schema. | シーケンスを含むスキーマを指定します。スキーマが省略された場合、データベースはユーザーの現在のスキーマでシーケンスを変更します。 |
| sequence_name | 変更するシーケンス名。 |
| RESTART | シーケンス値をリセットします。昇順の場合はMINVALUEから値の取得を再開し、降順の場合はMAXVALUEから値の取得を再開します。またはSTART WITH int_valueを使用してint_valueから値の取得を開始します。 |
| MINVALUE int_value | シーケンスの最小値を変更します。int_valueの値の範囲は[-9223372036854775808,9223372036854775807]です。 |
| NOMINVALUE | NOMINVALUEに変更した場合、昇順の最小値は1、降順の最小値は-9223372036854775808になります。 |
| MAXVALUE int_value | シーケンスの最大値を変更します。int_valueの値の範囲は[-9223372036854775808,9223372036854775807]です。新しく指定されたMAXVALUEは、現在のシーケンス番号の値より小さくてはなりません。注記
|
| NOMAXVALUE | NOMAXVALUEに変更した場合、昇順の最大値は9223372036854775807、降順の最大値は-1になります。 |
| INCREMENT BY int_value | シーケンスの自動インクリメントのステップ数を変更します。int_valueは0に設定できません。正の数を指定した場合、シーケンスは昇順になります。負の数を指定した場合、シーケンスは降順になります。指定しない場合、デフォルト値は1です。 |
| CACHE int_value | メモリ内で事前に割り当てられる自動インクリメント値の数を変更します。int_valueのデフォルト値は20です。CACHE int_valueの値は1より大きい必要があります。CACHE INT_VALUEの値が1の場合、NOCACHEと同じ意味になります。 |
| NOCACHE | シーケンスの値を事前に割り当てないように変更します。CACHEとNOCACHEを両方省略した場合、データベースはデフォルトで20をキャッシュします |
| ORDER | シーケンスの値を順番に生成するように変更します。 |
| NOORDER | NOORDERに変更した場合、シーケンスの値が順番に生成されることを保証しないように指定します。 |
| CYCLE | シーケンスの値をサイクル生成するように変更します。つまり、シーケンスは最大値または最小値に達した後も値を生成し続けます。昇順で最大値に達した後、最小値を生成します。降順のシーケンスが最小値に達した後、最大値を生成します。 注記
|
| NOCYCLE | NOCYCLEがデフォルト値です。NOCYCLEに変更した場合、シーケンスは最大値または最小値に達した後、これ以上値を生成できないように指定します。 |
例
自動インクリメント列
seq1の最大値を変更し、自動インクリメント値のループ生成を指定します。obclient> CREATE SEQUENCE seq1 START WITH 1 INCREMENT BY 1 MAXVALUE 2048 CYCLE; obclient> ALTER SEQUENCE seq1 MAXVALUE 4096 CYCLE;シーケンス
seq2の最大値と自動インクリメントステップ数を変更し、CYCLEとORDERを有効にして、シーケンスの値が事前に割り当てられていないことを示すためにNOCACHEを指定します。obclient> CREATE SEQUENCE seq2 MINVALUE 1 MAXVALUE 1000 START WITH 1 INCREMENT BY 1 CACHE 20; obclient> ALTER SEQUENCE seq2 MAXVALUE 1500 INCREMENT BY 5 CYCLE NOCACHE ORDER;シーケンス値をリセットし、3から値を取得します。
obclient> ALTER SEQUENCE seq2 RESTART; obclient> ALTER SEQUENCE seq2 RESTART START WITH 3;RESTARTの位置はオプションの任意の場所に配置できます。以下の例にある2つのシーケンス値をリセットするSQL文は等価です。obclient> ALTER SEQUENCE seq2 START WITH 3 RESTART MINVALUE -100 CYCLE; obclient> ALTER SEQUENCE seq2 RESTART START WITH 3 MINVALUE -100 CYCLE;