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