コンテンツにスキップ

NEXTVAL関数

NEXTVALは、LOOKUPテーブルのSEQUENCE列の次の自動増分値をINT64で返します。 INSERTの値の式でのみ使用できます。

構文

NEXTVAL(sequence_column)
  • sequence_columnPROPERTY(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;

注意事項

  • NEXTVALINSERT文でのみ使用できます。
  • SEQUENCE列はLOOKUPテーブル専用です。TAG、LOG、VOLATILE、TRANSACTIONテーブルでは使用できません。
  • LONGINT64以外の型、通常の列、SELECTWHEREからの呼び出しはエラーです。
  • Sequence番号はトランザクションのロールバックやエラー発生後も再利用されない場合があり、欠番が生じることがあります。
  • DDLの詳細はDDL - Sequence Columnを参照してください。
最終更新日