SQLコマンドの使用による表の変更

ALTER TABLEコマンドを使用して、表の定義を変更できます。

サンプル表を作成します。
CREATE TABLE stream_acct(
acct_id INTEGER,
acct_data JSON, 
PRIMARY KEY(acct_id)
)

スキーマ・フィールドの追加/削除

例: 表スキーマへのスキーマ・フィールドの追加。
ALTER TABLE stream_acct(ADD acct_balance INTEGER)

説明: フィールドを追加しても、表内の既存の行には影響しません。フィールドを追加すると、そのデフォルト値またはNULLが、このフィールドを含まない既存の行で、このフィールドの値として使用されます。追加するフィールドは、最上位フィールド(つまり、表の列)にすることも、階層表スキーマ内で深くネストすることもできます。その結果、フィールドはパスを介して指定されます。

例: 表スキーマでのスキーマ・フィールドの削除。
ALTER TABLE stream_acct(DROP acct_balance)
説明: 主キー以外の任意のフィールドをスキーマから削除できます。主キー・フィールドを削除しようとすると、次に示すエラーが表示されます。
ALTER TABLE stream_acct(DROP acct_id)
出力(エラーの表示):
Error handling command ALTER TABLE stream_acct(DROP acct_id):
Error: at (1, 27) Cannot remove a primary key field: acct_id

TTL値の変更

例: 表の存続時間値の変更

存続時間(TTL)のメカニズムを使用すると、表の行に時間枠を設定して、それを経過すると、行が自動的に期限切れになって使用できなくなるようにできまます。デフォルトでは、作成するすべての表のTTL値は、有効期限がないことを示すゼロとなります。

ALTER TABLEコマンドを使用すると、任意の表のこの値を変更できます。TTLを数値で指定し、その後にHOURSまたはDAYSを指定できます。
ALTER TABLE stream_acct USING TTL 5 days

ノート:

表のTTL値を変更しても、表の既存の行のTTL値は変更されません。かわりに、表の変更後に作成された行に配置されるデフォルトのTTL値のみが変更されます。表内のすべてのレコードのTTLを変更するには、表の各レコードを反復処理してそのTTL値を更新する必要があります。

リージョンの追加/削除

例: リージョンの追加

add regions句を使用すると、マルチリージョンのOracle NoSQL Database環境で既存の複数リージョン表(MR表)を新しいリージョンとリンクできます。この句を使用して、MR表を新しいリージョンに展開します。

次のDDLコマンドを使用して、新しいリージョンを既存のMR表に関連付けます。
ALTER TABLE myTable ADD REGIONS FRA;

説明: ここで、myTableはMR表で、FRAは既存のリージョンです。

例: リージョンの削除

リージョンの削除句を使用すると、マルチリージョンのOracle NoSQL Database環境で参加リージョンから既存のMR表を切断できます。この句を使用すると、MR表を縮小してリージョンを減らすことができます。

マルチリージョンのNoSQL Database設定で特定のリージョンからMR表を削除するには、参加している他のすべてのリージョンから次のステップを実行する必要があります。
ALTER TABLE myTable DROP REGIONS FRA

ここで、myTableはMR表で、FRAは削除するリージョンです。複数のリージョンを削除する場合は、comma_separated_list_of_regionsを指定できます。

変更前イメージの有効化

例: 表書込み操作の変更前イメージの有効化

書込みの変更前イメージは、DML操作によって更新または削除される前の表の行です。次の例に示すように、ALTER TABLE文をENABLE BEFORE IMAGE句とともに使用すると、表に対する書込み操作の変更前イメージの生成を有効にできます:

ALTER TABLE stream_acct ENABLE BEFORE IMAGE USING TTL 10 DAYS

前述の文は、変更前イメージの生成を有効にして、TTL値を10日にしています。stream_acct表に対する書込みの変更前イメージは、生成後10日間ディスクに格納されます。この期間が経過すると、変更前イメージは期限切れになり、ディスク領域が解放され、ストリームには表示されません。

ノート:

SQL文を使用して表で変更前イメージを有効にするだけでなく、Streams APIを介してサブスクリプション構成で変更前イメージを有効にする必要もあります。Oracle NoSQL Database Streams APIの詳細は、Streams開発者ガイドを参照してください。

次のように、TTL定義なしで変更前イメージを有効にすることもできます:
ALTER TABLE stream_acct ENABLE BEFORE IMAGE

前述の文は、stream_acct表に対して変更前イメージの生成を有効にしています。生成された変更前イメージは、TTL値で調整されないかぎり、24時間保持されます。