説明
このステートメントは、既存のシーケンスの増分値、最小値と最大値、キャッシュ数、および動作を変更するために使用します。対応する操作は、以降のシーケンス番号にのみ影響します。
説明
現在のスキーマ内のシーケンスのみを変更できます。または、そのシーケンスに対する 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;