SQL Serverです。 シーケンス(自動番号)

Create Sequence

自動番号フィールドを処理するために、SQL Server でシーケンスを作成したい場合があります。

Syntax

SQL Server (Transact-SQL) でシーケンスを作成する構文は次のとおりです:

CREATE SEQUENCE sequence_name ;

AS datatype これは BIGINT、INT、TINYINT、SMALLINT、DECIMAL または NUMERIC であります。 datatypeが指定されない場合、シーケンスのデフォルトはBIGINTデータ型になります。 START WITH value シーケンスが初期に返す開始値です。 INCREMENT BY value 正または負の値である。 正の値が指定された場合、シーケンスは値の昇順となる。 負の値が指定された場合、シーケンスは値の降順となる。 MINVALUE value シーケンスに許容される最小値。 NO MINVALUE シーケンスに最小値の指定がないことを意味する。 MAXVALUE value シーケンスに許される最大値。 NO MAXVALUE シーケンスに最大値の指定がないことを表す。 CYCLE シーケンスが一旦終了した後、やり直すことを意味する。 NO CYCLE シーケンスが完了した時点でエラーを発生させることを意味します。 シーケンスをやり直すことはありません。 CACHE値 ディスクIOを最小化するためにシーケンス番号をキャッシュします。 NO CACHE シーケンス番号をキャッシュしません。

SQLサーバー(Transact-SQL)でシーケンスを作成する例を見てみましょう。

例:

CREATE SEQUENCE contacts_seq AS BIGINT START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 99999 NO CYCLE CACHE 10;

これは、contacts_seqというシーケンスオブジェクトを作成するものです。 最初に使用するシーケンス番号は 1 で、それ以降の番号は 1 ずつ増加します (たとえば、2、3、4、…})。 パフォーマンスのために、最大10個の値をキャッシュします。 シーケンス番号の最大値は99999で、その最大値に達するとシーケンスは循環しません。

したがって、CREATE SEQUENCEステートメントは次のように単純化できます。

例:

SELECT NEXT VALUE FOR contacts_seq;

これはcontacts_seqから次の値を取得することになります。 nextvalステートメントは、SQLステートメントの中で使用する必要があります。 たとえば、

INSERT INTO contacts(contact_id, last_name)VALUES(NEXT VALUE FOR contacts_seq, 'Smith');

この INSERT ステートメントは、contacts テーブルに新しいレコードを挿入します。 contact_idフィールドには、contacts_seqシーケンスから次の番号が割り当てられます。 last_nameフィールドは’Smith’に設定されます。

コメントを残す

メールアドレスが公開されることはありません。