IDENTITY列の変更

アイデンティティ列は、alter table文を使用して変更できます。

アイデンティティ列を変更するには、次の2つの方法があります。
  • アイデンティティ列に関連付けられた順序ジェネレータの属性を変更できます。順序ジェネレータは新しい属性を使用して即時に変更されますが、クライアントでは、順序ジェネレータに対するクライアントからの後続のリクエストで生成された順序番号に対する新しい属性の影響が表示されます。これは、キャッシュが使い果たされたとき、またはクライアントに格納された属性がタイムアウトになったときに発生します。

    注意:

    各クライアントには、順序ジェネレータの属性を格納するための時間ベースのキャッシュがあります。クライアントは、サーバーに接続して、期限切れになったときにこのキャッシュをリフレッシュします。デフォルトのタイムアウトは5分で、KVStoreConfigでsgAttrsCacheTimeoutを設定して変更できます。
    次の例は、アイデンティティ列idのプロパティをGENERATED ALWAYSからGENERATED BY DEFAULTに変更し、順序ジェネレータの属性START WITH、INCREMENT BY、MAXVALUEおよびCACHEを変更する方法を示しています。
  • 既存のアイデンティティ列のアイデンティティ・プロパティを削除できます。そのアイデンティティ列に関連付けられている順序ジェネレータも削除されます。その列の値は、システムによって生成されなくなります。

例5-13 アイデンティティ列の変更

CREATE TABLE AlterTableExample (
    id INTEGER GENERATED ALWAYS AS IDENTITY
    (START WITH 1
    INCREMENT BY 2
    MAXVALUE 100
    CACHE 1
    CYCLE),
    name STRING,
PRIMARY KEY(id)
);
INSERT INTO AlterTableExample VALUES (DEFAULT, "John" );
SELECT * FROM AlterTableExample;

ALTER TABLE AlterTableExample ( MODIFY 
    id GENERATED BY DEFAULT AS IDENTITY
    (START WITH 1000
    INCREMENT BY 3
    MAXVALUE 5000
    CACHE 1
    CYCLE)
);

INSERT INTO AlterTableExample VALUES (DEFAULT, "Peter" );
INSERT INTO AlterTableExample VALUES (DEFAULT, "Mary" );
SELECT * FROM AlterTableExample;