CREATE SEQUENCE¶
連続した一意の番号を生成するために使用できる新しいシーケンスを作成します。
重要
Snowflakeでは、ギャップのないシーケンス番号の生成は保証されません。生成される数字は必ずしも連続しているとは限りません。
詳細については、 シーケンスの使用 をご参照ください。
- こちらもご参照ください。
DROP SEQUENCE、 ALTER SEQUENCE、 SHOW SEQUENCES、 DESCRIBE SEQUENCE
構文¶
必須パラメーター¶
nameシーケンスの識別子を指定します。これは、シーケンスが作成されるスキーマに対して一意である必要があります。
また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例:
"My object")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。識別子の詳細については、 識別子の要件 をご参照ください。
オプションのパラメーター¶
START [ WITH ] [ = ] initial_valueシーケンスによって返される最初の値を指定します。サポートされる値は、64ビットの2の補数整数(
-2^63から2^63 - 1まで)で表すことができる値です。デフォルト:
1INCREMENT [ BY ] [ = ] sequence_intervalシーケンスのステップ間隔を指定します。
シーケンス間隔
nが正の場合、次のn-1値は各シーケンス呼び出しによって予約されます。シーケンス間隔
-nが負の場合、次に低いn-1値が各シーケンス呼び出しによって予約されます。
サポートされる値は、64ビットの2の補数整数で表すことができるゼロ以外の値です。
デフォルト:
1{ ORDER | NOORDER }シーケンスのために生成される値を 昇順または降順 に生成するかどうかを指定します。
ORDER は、シーケンスまたは自動増分列に対して生成される値が、昇順(または、間隔が負の値の場合は降順)であることを指定します。
たとえば、シーケンスまたは自動増分の列に
START 1 INCREMENT 2がある場合、生成される値は1、3、5、7、9などです。NOORDER は、値が昇順であることが保証されないことを指定します。
たとえば、シーケンスに
START 1 INCREMENT 2がある場合、生成される値は1、3、101、5、103などです。NOORDER は、複数の INSERT 操作を同時に実行する必要がある場合(例: 複数のクライアントが複数の INSERT ステートメントを実行する場合)に、パフォーマンスを向上させることができます。
デフォルト: NOORDER_SEQUENCE_AS_DEFAULT パラメーターは、デフォルトで設定されるプロパティを決定します。
COMMENT = 'string_literal'シーケンスのコメントを指定します。
デフォルト: 値なし
アクセス制御の要件¶
この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。
権限 |
オブジェクト |
注意 |
|---|---|---|
CREATE SEQUENCE |
スキーマ |
スキーマ内のオブジェクトを操作するには、親データベースの少なくとも1つの権限と、親スキーマの少なくとも1つの権限が必要です。
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
シーケンスの作成後には、シーケンスの最初/初期値は変更できません。
シーケンスは、ギャップのないシーケンスを必ずしも生成しません。値は(制限に達するまで)増加し、一意ですが、必ずしも連続しているとは限りません。上限と下限などの詳細については、 シーケンスのセマンティクス をご参照ください。
メタデータについて、
注意
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
OR REPLACE 句と IF NOT EXISTS 句は互いに排他的です。この2つを同じステートメントで使うことはできません。
CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。
例¶
シーケンスを使用する簡単な例を次に示します。
同じクエリを再度実行します。シーケンス番号がどのように変化するかに注意してください。
次に、テーブルに挿入するときにシーケンスを使用します。
1ではなく5ずつ増加するシーケンスを作成します。
同じクエリを再度実行します。シーケンス番号がどのように変化するかに注意してください。シーケンス番号の次のセットは、前のステートメントが中断したときよりも5つ上で始まると期待することでしょう。ただし、次のシーケンス番号は20から始まります(5 * 4、5は増分のサイズ、4はステートメント内の
NEXTVAL操作の数):
この例は、列のデフォルト値としてシーケンスを使用し、テーブルの各行に一意の識別子を提供できることを示しています。
このクエリは、テーブルの各行に異なる値があることを示しています。
その他の例は シーケンスの使用 にあります。