Hitachi

Hitachi Advanced Data Binder SQLリファレンス


3.1.1 ALTER TABLE文の指定形式および規則

ALTER TABLE文で次に示すことができます。

なお,1回のALTER TABLE文で,上記の複数の操作を同時に実行することはできません。

〈この項の構成〉

(1) 指定形式および説明

(a) 実表に列を追加する場合

指定形式

ALTER TABLE文::=ALTER TABLE 表名
                      ADD COLUMN 列定義
 
  列定義::=列名 データ型 〔NOT NULL〕 〔BRANCH {YES|NO|AUTO}〕 〔圧縮方式指定
表名

列を追加する実表の表名を指定します。表名の指定規則については,「6.1.5 名前の修飾」の「(2) 表名の指定形式」を参照してください。

なお,次の表は指定できません。

  • ビュー表

  • ディクショナリ表

  • システム表

ADD COLUMN 列定義
列定義::=列名 データ型 〔NOT NULL〕 〔BRANCH {YES|NO|AUTO}〕 〔圧縮方式指定

追加する列の列定義を指定します。

列追加の仕様を次に示します。

  • 追加できる列は1列だけです。また,実表の最後の列に追加されます。

  • 追加した列にはナル値が格納されます。

  • 次の実表には列を追加できません。

    • 操作対象の実表の列数が上限(1,000列)に達している場合

    • 操作対象の実表がFIX表であり,かつ行を格納するセグメントが割り当てられている状態の場合

    • 操作対象の実表が,CREATE TABLE文を実行した際にBRANCH ALLを指定した実表であり,かつ行を格納するセグメントが割り当てられている状態の場合

    行を格納するセグメントが割り当てられている状態については,マニュアルHADB システム構築・運用ガイドB-treeインデクスを定義する場合の注意点(B-treeインデクスの未完状態)を参照してください。

メモ

ALTER TABLE文でDEFAULT句を指定することはできません。

列名

追加する列の列名を指定します。

表中ですでに使用されている列名は指定できません。

また,HADBによって自動的に設定される導出列名と重複する可能性があるため,列名にEXPnnnn_NO_NAMEを指定しないでください。nnnnは,00009999の符号なし整数です。

データ型

追加する列のデータ型を指定します。指定できるデータ型を次の表に示します。

表3‒1 指定できるデータ型(ALTER TABLE文の場合)

項番

データ型

指定形式

1

INTEGER

INTまたはINTEGER

2

SMALLINT

SMALLINT

3

DECIMAL

DEC〔(m〔,n〕)〕またはDECIMAL〔(m〔,n〕)〕

m:精度(全体の桁数)

n:位取り(小数部の桁数)

mを省略すると38が仮定され,nを省略すると0が仮定されます。

4

NUMERIC※3

NUMERIC〔(m〔,n〕)〕

m:精度(全体の桁数)

n:位取り(小数部の桁数)

mを省略すると38が仮定され,nを省略すると0が仮定されます。

5

DOUBLE PRECISION

DOUBLEまたはDOUBLE PRECISION

6

FLOAT※4

FLOAT

7

CHARACTER

CHAR(n)またはCHARACTER(n)

n:文字列の長さ(バイト)

CHARまたはCHARACTERと指定した場合は,文字列の長さに1が仮定されます。

8

VARCHAR※1,※2

VARCHAR(n)

n:文字列の最大長(バイト)

9

DATE

DATE

10

TIME

TIME(p)またはTIME

p:小数秒精度(小数秒の桁数)

pに指定できる値は,0369,または12です。TIMEと指定した場合は,p0が仮定されます。

11

TIMESTAMP

TIMESTAMP(p)またはTIMESTAMP

p:小数秒精度(小数秒の桁数)

pに指定できる値は,0369,または12です。TIMESTAMPと指定した場合は,p0が仮定されます。

12

BINARY

BINARY(n)

n:バイナリデータの長さ(バイト数)

BINARYと指定した場合は,バイナリデータの長さに1が仮定されます。

13

VARBINARY※1

VARBINARY(n)

n:バイナリデータの最大長(バイト数)

14

ARRAY※5

要素データ型 ARRAY[最大要素数]

要素データ型

配列要素のデータ型を指定します。要素データ型には,数データ,文字データ,日時データ,またはバイナリデータのどれかのデータ型を指定します。要素データ型の指定形式は,項番1~13で説明している各データ型の指定形式の規則に従います。

最大要素数

配列要素の最大数を指定します。最大要素数には,2~30,000の符号なし整数定数を指定してください。

<指定例>

  • 要素データ型がCHAR(5)で,最大要素数が20の場合

    CHAR(5) ARRAY[20]

  • 要素データ型がINTEGERで,最大要素数が5の場合

    INTEGER ARRAY[5]

※1

FIX表に列を追加する場合,VARCHAR型およびVARBINARY型は指定できません。

※2

列の定義長が32,000バイトを超えるVARCHAR型は指定できません。

※3

NUMERIC型が指定された場合,HADBはデータ型にDECIMAL型が指定されたと見なします。

※4

FLOAT型が指定された場合,HADBはデータ型にDOUBLE PRECISION型が指定されたと見なします。

注※5

配列型のデータ型です。配列型の列を追加する際の考慮点については,マニュアルHADB システム構築・運用ガイド配列型の列の定義【カラムストア表】を参照してください。

重要
  • カラムストア表に配列型の列を追加できます。ローストア表には配列型の列を追加できません。

  • B-treeインデクスまたは一意性制約が定義されている表には,配列型の列を追加できません。

データ型の詳細については,「6.2 データ型」を参照してください。

NOT NULL

追加する列に非ナル値制約(ナル値を許さない制約)を定義する場合に指定します。

注意事項と規則を次に示します。

  • 行を格納するセグメントが割り当てられている状態の実表に対しては,NOT NULLを指定できません。行を格納するセグメントが割り当てられている状態については,マニュアルHADB システム構築・運用ガイドB-treeインデクスを定義する場合の注意点(B-treeインデクスの未完状態)を参照してください。

  • FIX表の場合,すべての列に対して非ナル値制約が設定されます。そのため,FIX表に列を追加する場合,NOT NULLの指定を省略しても,指定されていると見なされます。

BRANCH {YES|NO|AUTO

VARCHAR型またはVARBINARY型の列のデータの格納方法を指定します。

BRANCHYESまたはNOを指定した方がよいケースについては,マニュアルHADB システム構築・運用ガイド可変長データ型の列データの分岐指定(BRANCH)【ローストア表】を参照してください。

指定できる格納方法の種類は,CREATE TABLE文と同じです。また,BRANCHの指定を省略した場合の動作も,CREATE TABLE文と同じです。CREATE TABLE文でのBRANCHの詳細については,「3.7.1 CREATE TABLE文の指定形式および規則」の「(2) 指定形式の説明」の「(d) 列定義  【共通】」を参照してください。

なお,このオプションは,次の場合には指定できません。

  • 列を追加する表の表定義時に,BRANCH ALLを指定している場合

  • 追加する列のデータ型がVARCHAR型またはVARBINARY型以外の場合

  • 列を追加する表がカラムストア表の場合

圧縮方式指定
圧縮方式指定::=COMPRESSION TYPE {AUTO|NONE|RUNLENGTH|DICTIONARY|DELTA|DELTA_RUNLENGTH}

追加する列のデータを圧縮する方式(列データの圧縮方式)を指定します。

指定できる圧縮方式の種類は,CREATE TABLE文と同じです。また,圧縮方式指定の指定を省略した場合の動作も,CREATE TABLE文と同じです。CREATE TABLE文での圧縮方式指定の詳細については,「3.7.1 CREATE TABLE文の指定形式および規則」の「(2) 指定形式の説明」の「(d) 列定義  【共通】」を参照してください。

なお,このオプションは,列を追加する表がローストア表の場合は指定できません。

(b) 実表の列名を変更する場合

指定形式

ALTER TABLE文::=ALTER TABLE 表名
                      RENAME COLUMN 〔FROM〕 変更前の列名 TO 変更後の列名
表名

列名を変更する実表の表名を指定します。表名の指定規則については,「6.1.5 名前の修飾」の「(2) 表名の指定形式」を参照してください。

なお,次の表は指定できません。

  • ビュー表

  • ディクショナリ表

  • システム表

RENAME COLUMN 〔FROM〕 変更前の列名 TO 変更後の列名

変更前の列名と変更後の列名を指定します。変更前の列名が,変更後の列名に変更されます。

指定規則を次に示します。

  • すでに存在する列名を変更後の列名に指定できません。

  • 変更前の列名と変更後の列名に同じ列名を指定できません。

  • HADBによって自動的に設定される導出列名と重複する可能性があるため,変更後の列名にEXPnnnn_NO_NAMEを指定しないでください。nnnnは,00009999の符号なし整数です。

重要

列名を変更した場合,列名を変更した表に依存するビュー表が無効化されます。無効化されるビュー表の確認方法については,マニュアルHADB システム構築・運用ガイド依存するビュー表を確認する方法を参照してください。

(c) 実表の表名を変更する場合

指定形式

ALTER TABLE文::=ALTER TABLE 表名
                      RENAME 〔TABLE〕 TO 表識別子
表名

表名を変更する実表の表名を指定します。表名の指定規則については,「6.1.5 名前の修飾」の「(2) 表名の指定形式」を参照してください。

なお,次の表は指定できません。

  • ビュー表

  • ディクショナリ表

  • システム表

RENAME 〔TABLE〕 TO 表識別子

変更後の表識別子を指定します。

指定規則を次に示します。

  • すでに存在する表名は指定できません。

  • 変更前の表識別子と同じ表識別子を指定することはできません。

重要

表名を変更した場合,表名を変更した表に依存するビュー表が無効化されます。無効化されるビュー表の確認方法については,マニュアルHADB システム構築・運用ガイド依存するビュー表を確認する方法を参照してください。

(d) マルチチャンク表のチャンク数の最大値を変更する場合

指定形式

ALTER TABLE文::=ALTER TABLE 表名
                      CHANGE OPTION CHUNK=チャンク数の最大値
表名

チャンク数の最大値を変更するマルチチャンク表の表名を指定します。表名の指定規則については,「6.1.5 名前の修飾」の「(2) 表名の指定形式」を参照してください。

CHANGE OPTION CHUNK=チャンク数の最大値

〜〈符号なし整数〉((230,000))(単位:個)

CREATE TABLE文のチャンク指定で指定したチャンク数の最大値を変更する場合に,変更後のチャンク数の最大値を指定します。

注意事項を次に示します。

  • このオプションは,マルチチャンク表に対してだけ指定できます。

  • 表中に作成されているチャンク数よりも小さい値を指定することはできません。

(e) 配列型の列の最大要素数を大きくする場合

指定形式

ALTER TABLE文::=ALTER TABLE 表名
                      {CHANGE|ALTER} 〔COLUMN〕 列名 ARRAY[最大要素数]
表名

最大要素数を大きくする表の表名を指定します。表名の指定規則については,「6.1.5 名前の修飾」の「(2) 表名の指定形式」を参照してください。

CHANGEALTER} 〔COLUMN列名 ARRAY[最大要素数]
列名

最大要素数を大きくする列の列名を指定します。

存在する配列型の列の列名を指定してください。

最大要素数

〜〈符号なし整数〉((230,000))

変更後の最大要素数を指定します。

変更前の最大要素数より大きい値を指定してください

重要

最大要素数を変更した場合,最大要素数を変更した表に依存するビュー表が無効化されます。無効化されるビュー表の確認方法については,マニュアルHADB システム構築・運用ガイド依存するビュー表を確認する方法を参照してください。

(f) レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更する場合

指定形式

ALTER TABLE文::=ALTER TABLE 表名
                      CHANGE OPTION CHUNK チャンクアーカイブ指定
 
  チャンクアーカイブ指定::=ARCHIVABLE
                                RANGECOLUMN=列名
                               〔RANGEINDEXNAME=インデクス識別子〕
                               〔IN DBエリア名〕
                                ARCHIVEDIR=アーカイブディレクトリ名
表名

アーカイブマルチチャンク表に変更するレギュラーマルチチャンク表の表名を指定します。表名の指定規則については,「6.1.5 名前の修飾」の「(2) 表名の指定形式」を参照してください。

なお,次の表は指定できません。

  • FIX表

  • シングルチャンク表

  • カラムストア表

CHANGE OPTION CHUNK チャンクアーカイブ指定
チャンクアーカイブ指定::=ARCHIVABLE
                              RANGECOLUMN=列名
                             〔RANGEINDEXNAME=インデクス識別子〕
                             〔IN DBエリア名〕
                              ARCHIVEDIR=アーカイブディレクトリ名

レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更する場合に指定するオプションです。

RANGECOLUMN=列名

列名を指定します。ここで指定した列が,アーカイブレンジ列になります。

指定規則を次に示します。

  • 次に示すデータ型の列は,アーカイブレンジ列にできません。

    ・定義長が33バイト以上のCHARACTER

    VARCHAR

    BINARY

    VARBINARY

  • 非ナル値制約(NOT NULL)の指定がされている列を,アーカイブレンジ列に指定してください。

RANGEINDEXNAME=インデクス識別子

ALTER TABLE文の実行時,アーカイブレンジ列をインデクス構成列とするレンジインデクスが,HADBサーバによって自動的に定義されます。このレンジインデクスに付けるインデクス識別子を指定します。

重要

アーカイブレンジ列にすでにレンジインデクスが定義されている場合は,ALTER TABLE文の実行時にレンジインデクスは自動的に定義されません。すでに定義されているレンジインデクスを使用します。そのため,アーカイブレンジ列にすでにレンジインデクスが定義されている場合に,RANGEINDEXNAMEを指定すると,ALTER TABLE文がエラーになります。

RANGEINDEXNAMEの指定を省略した場合,HADBサーバが次の規則に従ってインデクス識別子を決定します。

ARCHIVE_RANGE_INDEX_nnnnnnnn

nnnnnnnnは,アーカイブマルチチャンク表の表IDを16進数に変換した8桁の文字列です。

上記の規則に従って決定されたインデクス識別子が,同一スキーマ内に存在する場合,ALTER TABLE文がエラーになります。そのため,CREATE INDEX文でインデクスを定義する際は,上記の形式に類似した名称を使用しないことを推奨します。

メモ

自動的に定義されたレンジインデクスは,CREATE INDEX文で定義したレンジインデクスと同じ規則が適用されます。

IN DBエリア名

HADBサーバによって自動的に定義されたレンジインデクスを格納するDBエリアの名称を指定します。

なお,次に示す場合は,「IN DBエリア名」の指定を省略してください。

  • アーカイブレンジ列にレンジインデクスがすでに定義されている場合

上記の場合は,HADBサーバによって自動的にレンジインデクスが定義されないため,「IN DBエリア名」の指定が不要になります。

また,次の条件をすべて満たす場合は,サーバ定義のadb_sql_default_dbarea_sharedオペランドに指定したDBエリアに,HADBサーバによって自動的に定義されたレンジインデクスが格納されます。

  • IN DBエリア名」の指定を省略した場合

  • アーカイブレンジ列にレンジインデクスが定義されていない場合

なお,上記2つの条件を両方とも満たす場合に,サーバ定義のadb_sql_default_dbarea_sharedオペランドが指定されていないと,ALTER TABLE文がエラーになります。また,サーバ定義のadb_sql_default_dbarea_sharedオペランドに指定したDBエリアが存在しない場合や,データ用DBエリア以外のDBエリアを指定している場合も,ALTER TABLE文がエラーになります。

ARCHIVEDIR=アーカイブディレクトリ名

アーカイブファイルを格納するアーカイブディレクトリの名称を絶対パスで指定します。

指定規則を次に示します。

  • アーカイブディレクトリ名は,文字列定数の形式で指定してください。文字列定数については,「6.3 定数」を参照してください。

  • アーカイブディレクトリには,存在するディレクトリを指定してください。また,HADB管理者に対して,読み取り権限,書き込み権限,および実行権限を与えたディレクトリを指定してください。

    さらに,アーカイブディレクトリのパスに含まれるすべてのディレクトリに,HADB管理者に対する実行権限を付与してください。

    (例)アーカイブディレクトリが,/HADB/archiveの場合

    /HADB/archiveには,読み取り権限,書き込み権限,および実行権限が必要です。

    /,および/HADBには,実行権限が必要です。

  • 次のディレクトリは,アーカイブディレクトリにできません。

    ・サーバディレクトリ

    ・サーバディレクトリの下位のディレクトリ

    ・下位のディレクトリにサーバディレクトリがあるディレクトリ

    ・DBディレクトリ

    ・DBディレクトリの下位のディレクトリ

    ・下位のディレクトリにDBディレクトリがあるディレクトリ

    ・ルートディレクトリ

    DBディレクトリが/HADB/dbの場合,アーカイブディレクトリにできるディレクトリの例と,できないディレクトリの例を次に示します。

    アーカイブディレクトリの例

    理由

    アーカイブディレクトリにできるディレクトリの例

    /HADB/archive

    なし。

    アーカイブディレクトリにできないディレクトリの例

    /HADB/db

    左記のディレクトリは,DBディレクトリと同一のため,アーカイブディレクトリにできません。

    /HADB/db/archive

    左記のディレクトリは,DBディレクトリの下位のディレクトリのため,アーカイブディレクトリにできません。

    /HADB

    左記のディレクトリは,下位のディレクトリにDBディレクトリがあるため,アーカイブディレクトリにできません。

  • HADBサーバのインストール時にインストールデータを格納したディレクトリを,アーカイブディレクトリに指定しないようにしてください。

  • アーカイブディレクトリ名は,前後の空白を除いて1〜400バイトの長さにしてください。

    メモ

    アーカイブディレクトリ名の前後に空白がある場合,その空白は取り除かれて処理されます(空白が取り除かれた名称が仮定されます)。

  • アーカイブディレクトリ名のパスに含まれる各要素は,NAME_MAXバイト以下になるようにしてください。NAME_MAXの値は,ご利用の環境によって異なります。

アーカイブディレクトリ名にシンボリックリンクを指定した場合,シンボリックリンクを解決したあとの絶対パス名が,ここで説明している規則に従っているかどうかがチェックされます。

[マルチノード機能]

マルチノード機能を使用している場合は,次のことに注意してください。

  • アーカイブディレクトリは,NFSなどを使用して全ノードで共有してください。また,ALTER TABLE文の実行時点で,全ノードで共有されている必要があります。

  • ALTER TABLE文の実行時,ここで説明しているアーカイブディレクトリ名の指定規則のチェックが,プライマリノードで実行されます。セカンダリノードでは,チェックは行われません。そのため,ALTER TABLE文の実行後,セカンダリノードでアーカイブディレクトリ名のチェックを行ってください。

■レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更したときに定義されるロケーション表について

ALTER TABLE文を実行して,レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更した場合,ロケーション表とロケーション表のインデクスがHADBサーバによって自動的に定義されます。この,ロケーション表とロケーション表のインデクスは,HADBサーバが使用します。そのため,ロケーション表とロケーション表のインデクスをユーザが直接操作したり,定義変更したり,または削除したりすることはできません。ロケーション表については,マニュアルHADB システム構築・運用ガイドアーカイブマルチチャンク表の検索を参照してください。

ロケーション表,およびロケーション表のインデクスは,アーカイブマルチチャンク表と同じDBエリア内に格納されます。

ロケーション表およびロケーション表のインデクスの名称は,次の表で説明している規則に従って決定されます。

表3‒2 ロケーション表およびロケーション表のインデクスの名称規則

種別

名称規則

インデクスが管理する情報

インデクス構成列

ロケーション表

"HADB"."LOCATION_TABLE_nnnnnnnn"

ロケーション表のインデクス

"HADB"."LOCATION_INDEX_nnnnnnnn_CHUNK_ID"

アーカイブファイルに対応するチャンクのチャンクIDを管理しています。

CHUNK_ID

"HADB"."LOCATION_INDEX_nnnnnnnn_RANGE_01"

アーカイブファイルに格納されているデータのアーカイブレンジ列の値の範囲(上限値と下限値)を管理しています。

  • RANGE_MAX

  • RANGE_MIN

"HADB"."LOCATION_INDEX_nnnnnnnn_RANGE_02"

アーカイブファイルに格納されているデータのアーカイブレンジ列の値の下限値を管理しています。

RANGE_MIN

(凡例)

−:該当しません。

nnnnnnnnは,アーカイブマルチチャンク表の表IDを16進数に変換した8桁の文字列です。

ロケーション表,およびロケーション表のインデクスのスキーマ名はHADBです。

レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更する際の注意事項を次に示します。

  • レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更した場合,ロケーション表,ロケーション表のインデクス,およびアーカイブレンジ列のレンジインデクスがHADBサーバによって自動的に定義されます。ただし,アーカイブレンジ列に指定した列にレンジインデクスが定義されている場合は,レンジインデクスは新たに定義されません。すでに定義されているレンジインデクスを使用します。列にレンジインデクスが定義されているかどうかを調べる方法については,マニュアルHADB システム構築・運用ガイドディクショナリ表の検索アーカイブレンジ列として指定する列にレンジインデクスが定義されているかどうかを調べる場合を参照してください。

  • レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更した場合,変更対象の表に依存するビュー表が無効化されます。無効化されるビュー表の確認方法については,マニュアルHADB システム構築・運用ガイド依存するビュー表を確認する方法を参照してください。

レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更する方法については,マニュアルHADB システム構築・運用ガイドレギュラーマルチチャンク表をアーカイブマルチチャンク表に変更する方法を参照してください。

(g) アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する場合

指定形式

ALTER TABLE文::=ALTER TABLE 表名
                      CHANGE OPTION CHUNK UNARCHIVABLE
表名

レギュラーマルチチャンク表に変更するアーカイブマルチチャンク表の表名を指定します。表名の指定規則については,「6.1.5 名前の修飾」の「(2) 表名の指定形式」を参照してください。

CHANGE OPTION CHUNK UNARCHIVABLE

アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する場合に指定するオプションです。

アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する際の注意事項を次に示します。

  • アーカイブ状態のチャンクがある場合,アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更できません。チャンクのアーカイブ状態を解除したあとに,アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更してください。

  • アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更した場合,ロケーション表と,ロケーション表に定義されたインデクスが削除されますが,アーカイブレンジ列に自動的に定義されたレンジインデクスは削除されません。このレンジインデクスが不要な場合は,アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更したあとに,DROP INDEX文でレンジインデクスを削除してください。

  • アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更した場合,変更対象の表に依存するビュー表が無効化されます。無効化されるビュー表の確認方法については,マニュアルHADB システム構築・運用ガイド依存するビュー表を確認する方法を参照してください。

アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する方法については,マニュアルHADB システム構築・運用ガイドアーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する方法を参照してください。

(2) 実行時に必要な権限

ALTER TABLE文を実行する場合,CONNECT権限およびスキーマ定義権限が必要になります。

(3) 規則

  1. 表定義を変更できるのは,自分(HADBサーバに接続中の認可識別子のHADBユーザ)が所有するスキーマの表だけです。ほかのHADBユーザが所有するスキーマの表の表定義は変更できません。

  2. 実表の列の長さの合計(行長)が,次の計算式を満たさない場合,列を追加することはできません。

    ●計算式(対象の実表がローストア表の場合)
    ROWSZ(行長)ページサイズ - 56 (単位:バイト)
    ●計算式(対象の実表がカラムストア表の場合)
    ROWSZ(行長)ページサイズ - 80 (単位:バイト)

    ROWSZ(行長)を求める計算式については,マニュアルHADB システム構築・運用ガイド行の種別ごとの格納ページ数の求め方を参照してください。

  3. コマンドの中断によって更新不可状態となった表の表定義を変更することはできません。

  4. 配列型の列を定義した表は,ページサイズが4,096バイトのデータ用DBエリアには格納できません。

  5. 配列型の列を追加する場合,または配列型の列を定義した表に列を追加する場合,次の条件を満たすように列を追加してください。

    1セグメントの容量(単位バイト)≧ARRAY_ROWSZ(配列型の列を定義した表の行長)

    1セグメントの容量は,adbinitコマンドまたはadbmodareaコマンドの-sオプションで指定します。

    ARRAY_ROWSZの求め方については,マニュアルHADB システム構築・運用ガイド行の種別ごとの格納ページ数の求め方配列型の列を定義した表の行長(変数ARRAY_ROWSZ)の求め方を参照してください。

(4) 例題

例題1(ローストア表に列を追加する場合)

ローストア表の店舗表(SHOPSLIST)に,次の店舗メールアドレス列(EMAIL_ADDRESS)を追加します。

  • 列名:EMAIL_ADDRESS

  • データ型:VARCHAR(100)

  • 列のデータを分岐して格納する

ALTER TABLE "SHOPSLIST"
    ADD COLUMN "EMAIL_ADDRESS" VARCHAR(100) BRANCH YES

[図データ]

例題2(カラムストア表に列を追加する場合)

カラムストア表のレシート表(RECEIPT)に,次の発行時刻列(ISSUE_TIME)を追加します。

  • 列名:ISSUE_TIME

  • データ型:TIME

  • 列のデータを,差分ランレングス圧縮方式(DELTA_RUNLENGTH)で圧縮する

ALTER TABLE "RECEIPT"
    ADD COLUMN  "ISSUE_TIME" TIME COMPRESSION TYPE DELTA_RUNLENGTH

[図データ]

例題3(列名を変更する場合)

店舗表(SHOPSLIST)のEMAIL_ADDRESS列の列名を,EMAILに変更します。

ALTER TABLE "SHOPSLIST"
    RENAME COLUMN FROM EMAIL_ADDRESS TO EMAIL
例題4(実表の表名を変更する場合)

店舗表(SHOPSLIST)の表名を,STORELISTに変更します。

ALTER TABLE "SHOPSLIST"
    RENAME TABLE TO "STORELIST"
例題5(チャンク数の最大値を変更する場合)

店舗表(SHOPSLIST)のチャンク数の最大値を300に変更します。

ALTER TABLE "SHOPSLIST"
    CHANGE OPTION CHUNK=300
例題6(配列型の列の最大要素数を大きくする場合)

商品表(PRODUCTLIST)の配列型の列である商品コード列(PUR-CODE)の最大要素数を200に変更します(大きくします)。

ALTER TABLE "PRODUCTLIST"
    CHANGE COLUMN "PUR-CODE" ARRAY[200]
例題7(レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更する場合)

ローストア表の店舗表(SHOPSLIST)を,レギュラーマルチチャンク表からアーカイブマルチチャンク表に変更します。アーカイブレンジ列などに関する指定は,次のとおりとします。

  • RECORD_DAY列をアーカイブレンジ列とする

  • /mnt/nfs/archivedirをアーカイブディレクトリとする

  • HADBサーバによって自動的に定義されたレンジインデクスを格納するDBエリアをDBAREA02とする

ALTER TABLE "SHOPSLIST"
    CHANGE OPTION CHUNK ARCHIVABLE
        RANGECOLUMN="RECORD_DAY"
        IN "DBAREA02"
        ARCHIVEDIR='/mnt/nfs/archivedir'
例題8(アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する場合)

店舗表(SHOPSLIST)を,アーカイブマルチチャンク表からレギュラーマルチチャンク表に変更します。

ALTER TABLE "SHOPSLIST"
    CHANGE OPTION CHUNK UNARCHIVABLE