IDENTITY列の変更
アイデンティティ列は、alter table文を使用して変更できます。
アイデンティティ列を変更するには、次の2つの方法があります。
- アイデンティティ列に関連付けられた順序ジェネレータの属性を変更できます。順序ジェネレータは新しい属性を使用して即時に変更されますが、クライアントでは、順序ジェネレータに対するクライアントからの後続のリクエストで生成された順序番号に対する新しい属性の影響が表示されます。これは、キャッシュが使い果たされたとき、またはクライアントに格納された属性がタイムアウトになったときに発生します。
注意:
各クライアントには、順序ジェネレータの属性を格納するための時間ベースのキャッシュがあります。クライアントは、サーバーに接続して、期限切れになったときにこのキャッシュをリフレッシュします。デフォルトのタイムアウトは5分で、KVStoreConfigでsgAttrsCacheTimeoutを設定して変更できます。 - 既存のアイデンティティ列のアイデンティティ・プロパティを削除できます。そのアイデンティティ列に関連付けられている順序ジェネレータも削除されます。その列の値は、システムによって生成されなくなります。
例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;