説明
このステートメントは、既存のシーケンスの増分値、最小値と最大値、キャッシュ数および動作を変更するために使用されます。対応する操作は、後続のシリアル番号にのみ影響します。
説明
ユーザーは自身のスキーマに属するシーケンス、またはそのシーケンスに対する ALTER オブジェクト権限を持つ場合にのみ操作できます。
構文
ALTER SEQUENCE [ schema. ] sequence_name
{ RESTART [ START WITH int_value ]
|[ MINVALUE int_value | NOMINVALUE ]
|[ MAXVALUE int_value | NOMAXVALUE ]
|[ INCREMENT BY int_value ]
|[ CACHE int_value | NOCACHE ]
|[ ORDER | NOORDER ]
|[ CYCLE | NOCYCLE]
}
;
パラメータの説明
| フィールド | 説明 |
|---|---|
| schema. | シーケンスを含むスキーマを指定します。Schemaが省略された場合、データベースはユーザーの現在のスキーマでシーケンスを変更します。 |
| sequence_name | 変更するシーケンス名。 |
| RESTART | シーケンス値をリセットします。昇順の場合はMINVALUEから、降順の場合はMAXVALUEから、またはSTART WITH int_valueを使用してint_valueから値の取得を再開します。 |
| MINVALUE int_value | シーケンスの最小値を変更します。int_value の値の範囲は [-(1027-1) ~ (1027-1)] です。 |
| NOMINVALUE | NOMINVALUE に変更すると、昇順時の最小値は1、降順時の最小値は -(1027-1) になります。 |
| MAXVALUE int_value | シーケンスの最大値を変更します。int_value の値の範囲は [(-1027+1) ~ (1028-1)] です。新しく指定された MAXVALUE は、現在のシーケンス番号の値より小さくてはなりません。 注意 MINVALUE と MAXVALUE を同時に指定する場合、MINVALUE は MAXVALUE より小さい必要があります。 MAXVALUE と MINVALUE の差は、INCREMENT BY で指定された int_value 以上である必要があります。 |
| NOMAXVALUE | NOMAXVALUE に変更すると、昇順時の最大値は (1028-1) に、降順時の最大値は -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> ALTER SEQUENCE seq1 MAXVALUE 1024 CYCLE; Query OK, 0 rows affectedシーケンス
seq3の最大値と自動インクリメントステップ数を変更し、CYCLEとORDERを有効にして、シーケンスの値が事前に割り当てられていないことを示すためにNOCACHEを指定します。obclient> ALTER SEQUENCE seq3 MAXVALUE 1500 INCREMENT BY 5 CYCLE NOCACHE ORDER; Query OK, 0 rows affectedシーケンス値をリセットし、3から値を取得します。
obclient> ALTER SEQUENCE seq3 RESTART; Query OK, 0 rows affected obclient> ALTER SEQUENCE seq3 RESTART START WITH 3; Query OK, 0 rows affectedRESTARTの位置はオプションの任意の場所に配置できます。以下の例にある2つのシーケンス値をリセットするSQL文は、等価です。obclient> ALTER SEQUENCE seq3 START WITH 3 RESTART MINVALUE -100 CYCLE; Query OK, 0 rows affected obclient> ALTER SEQUENCE seq3 RESTAR START WITH 3 T MINVALUE -100 CYCLE; Query OK, 0 rows affected