機能
表の定義を変更します。列定義追加、列定義削除、表と列の注釈定義変更があります。
記述形式
参照項番
権限
表定義を変更できるのは、その表の定義者、スキーマの定義者またはその表のALTER権の保持者です。
一般規則
格納構造がOBJECTの場合、表定義変更文は実行できません。
列定義によって定義される列が、変更対象表に追加されます。このとき、列の定義順は既存の列の後になります。
列名は、変更対象表内で一意の名前であることが必要です。
すでに存在する行に追加される列の値は、既定値になります。また、DEFAULT句にUSERを指定している場合は、定義文実行のユーザ名になります。
BLOB型の列は表のデータ構造がSEQUENTIALまたはOBJECTの場合のみ指定できます。
格納構造がSEQUENTIALの場合、BLOB型の列を追加するとき、表の行は、ページ長を超えてもかまいません。ただし、格納構造がRANDOMの場合はページ長を超える列の追加はできません。
以下のいずれかの条件に該当するSQL手続き文を含むプロシジャルーチンが定義されている場合は、列定義追加によって影響を受けるため、列を追加することはできません。
問合せ式、問合せ指定および単一行SELECT文の選択リストの次数が増加して、実行できなくなるSQL手続き文
INSERT文の挿入列リストが省略されていて、挿入列の数が増加して実行できなくなるSQL手続き文
列名が一意に決定できなくなるSQL手続き文
以下の条件に該当するSQL手続き文を含むトリガが定義されている場合は、列定義追加によって影響を受けるため、列を追加することはできません。
INSERT文の挿入列リストが省略されていて、挿入列の数が増加して実行できなくなるSQL手続き文
その他の構文要素の説明は、“3.22 CREATE TABLE文(表定義)”を参照してください。
対象表に列が1つしかない場合は、指定することはできません。
対象列を構成列に含むインデックス、その列を参照しているビュー表、プロシジャルーチン、トリガまたは一意性制約が存在している場合は削除できません。
列名を指定した場合は、列の注釈を変更します。列名を指定していない場合は、表の注釈を変更します。
注釈定義変更で、OFFを指定した場合、注釈は削除されます。
注釈は256バイト以内の文字列(日本語記述可能)を指定することができます。
変更する表の名前を指定します。
変更する列の名前を指定します。
使用例
表T1に列C3を追加します。
ALTER TABLE S1.T1 ADD C3 SMALLINT
DEFAULT句を指定した列を追加します(NOT NULL制約を記述した新しい列C4を追加定義します)。
ALTER TABLE S1.T1 ADD C4 SMALLINT DEFAULT 1 NOT NULL
表T1から列C3を削除します。
ALTER TABLE S1.T1 DROP C3