コンテンツにスキップ

AUTO_INCREMENT

AUTO_INCREMENTは、単一の64ビット整数PRIMARY KEY値をサーバーが自動生成するための列属性です。

Machbase 8.7.0からLOOKUPとVOLATILEでもサポート

サポート範囲

項目サポート範囲
EditionStandard Edition
テーブルTRANSACTION、LOOKUP、VOLATILE
列の型LONGINT64
キー列単位の単一PRIMARY KEY

テーブルレベル・複合PRIMARY KEYには使用できません。 LOOKUPの同じ列にPROPERTY(SEQUENCE)を併用したり、NEXTVAL()を使用したりしないでください。

CREATE TRANSACTION TABLE device_master (
    id          LONG PRIMARY KEY AUTO_INCREMENT,
    device_name VARCHAR(80),
    site_code   VARCHAR(32)
);

CREATE LOOKUP TABLE lookup_order (
    id   INT64 PRIMARY KEY AUTO_INCREMENT,
    item VARCHAR(100)
);

CREATE VOLATILE TABLE volatile_order (
    id   LONG PRIMARY KEY AUTO_INCREMENT,
    item VARCHAR(100)
);

明示的なトランザクションの進行中は、TRANSACTIONテーブルのDDLを実行できません。 先にCOMMITまたはROLLBACKしてからテーブルを作成します。

自動値の生成

自動生成列を省略するかNULLを入力すると、サーバーが値を生成します。

INSERT INTO device_master(device_name, site_code)
VALUES ('compressor-01', 'SEOUL-A');

INSERT INTO device_master(id, device_name, site_code)
VALUES (NULL, 'pump-02', 'SEOUL-A');

NULL以外の値を直接指定することもできます。 指定値が現在の次の値以上なら、次の自動値はそれより大きい値から進み、小さい値を指定しても番号は戻りません。 0は有効です。INT64_MAXの後は生成できる値がないため、自動INSERTは失敗します。

重複キーや失敗したINSERTの後で番号が再使用されるかどうかに依存しないでください。 この値は行識別子であり、欠番のない業務連番ではありません。

テーブル別の違い

動作TRANSACTIONLOOKUPVOLATILE
再起動後の行と次の自動値の保持OOX
明示的トランザクションOXX
INSERT ... SELECTによる自動値生成OXX
単一INSERT結果のROWIDOOO

VOLATILEテーブルは、サーバー再起動時にデータが消失し、次の自動値は1に戻ります。 テーブル定義は保持されるため、再作成は不要です。 自動列を省略したINSERT ... SELECTは、TRANSACTIONのデータ移行でのみ使用できます。

INSERT INTO device_master(device_name, site_code)
SELECT device_name, site_code
  FROM staging_device
 ORDER BY device_name;

INSERT結果の確認

対応するSDKは、成功した単一のINSERT ... VALUESの実行結果から、生成された識別子を提供できます。 batch、Append、loader、INSERT ... SELECT、UPSERTでは単一値を返しません。 詳細条件はROWID、言語別APIは SDK機能のサポート範囲を参照してください。

関連文書

最終更新日