NEXTVAL関数
NEXTVALは、LOOKUPテーブルのSEQUENCE列の次の自動増分値をINT64で返します。
INSERTの値の式でのみ使用できます。
構文
NEXTVAL(sequence_column)sequence_columnはPROPERTY(SEQUENCE=...)プロパティで作成された列である必要があります。INSERT以外の文脈(SELECT、WHEREなど)では使用できません。- 引数は正確に1つで、同じINSERT対象テーブルのSEQUENCE列を指定します。
Sequence列の作成
SEQUENCE列は、LOOKUPテーブルのLONGまたはINT64列でサポートします。
PROPERTY(SEQUENCE=1)は開始値を1に指定します。
CREATE LOOKUP TABLE seq_lookup (
id LONG PROPERTY(SEQUENCE=1) PRIMARY KEY,
name VARCHAR(64)
);NEXTVALの使用
-- NEXTVALで自動増分IDを挿入
INSERT INTO seq_lookup (id, name) VALUES (NEXTVAL(id), 'sensor-a');
INSERT INTO seq_lookup (id, name) VALUES (NEXTVAL(id), 'sensor-b');
INSERT INTO seq_lookup (id, name) VALUES (NEXTVAL(id), 'sensor-c');
-- 結果の確認
SELECT * FROM seq_lookup;
id name
----------
1 sensor-a
2 sensor-b
3 sensor-c
DROP TABLE seq_lookup;注意事項
NEXTVALはINSERT文でのみ使用できます。- SEQUENCE列はLOOKUPテーブル専用です。TAG、LOG、VOLATILE、TRANSACTIONテーブルでは使用できません。
LONG・INT64以外の型、通常の列、SELECT・WHEREからの呼び出しはエラーです。- Sequence番号はトランザクションのロールバックやエラー発生後も再利用されない場合があり、欠番が生じることがあります。
- DDLの詳細はDDL - Sequence Columnを参照してください。
最終更新日