挨拶
初めまして、日本システム開発株式会社の鈴木です。
技術者として更なる向上を目指すためQiitaアウトプットをする取り組みを行っています。
技術者としては経験が浅く発信内容はとにかく試したものの覚書になります。
今回は業務上で使用したSQL ServerのSequenceについて備忘録をつけていきます。
要件
業務上連番付きのファイルを作成する必要が発生しました。以下のような連番を発行する必要があったため、Sequenceで実装することとなりました。
・001~999の範囲の数字
・増分は1ずつ
・999の次は001
実装
今回は以下のようなSequenceを作成しました。
CREATE SEQUENCE file_seq
START WITH 1
MINVAL 1
MAXVAL 999
CYCLE
CACHE
値を取り出すときはSELECT NEXT VALUE FOR ~を使用します。
※また、このままですと値は1,2,3,...,999であるため001,002,003,...,999とするため「取り出した値の先頭に00を付与し末尾3桁を切り出す」という処理を挟んでいます。
設定意図
すべての設定項目については公式リファレンスを参照。
AS 型名
シーケンスの型
設定値は省略=bigint型
値の範囲としてはtinyintでも問題ないがわざわざtinyintを設定する意義も大きくなかったためデフォルト値を使用。
START WITH 1
開始値
仕様から1を開始値としました。
INCREMENT BY
一度のNEXT VALUE FORで増える増分
設定値は省略=1
増分が1であるためデフォルト値を使用。
MINVAL 1
最小値
仕様から開始値と同様に1に設定
MAXVAL 999
最大値
仕様から999に設定
CYCLE
循環するか否か
999から1に戻るとの仕様からオンに設定
CACHE
キャッシュ使用可否
連続で呼び出されることが予想されたため、オンに設定
公式リファレンス