ALTER TYPE ステートメントは、メンバー属性またはメソッドを追加または削除するために使用します。
機能の適用範囲
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
説明
このステートメントはV4.4.1バージョンから導入されました。
ALTER TYPE ステートメントを使用すると、オブジェクト型の既存の属性を変更したり、型のスカラー属性を変更したりできます。また、このステートメントを使用して型の仕様または本体を再コンパイルしたり、新しいオブジェクトメンバー・サブプログラム仕様を追加することで、オブジェクト型の仕様を変更したりできます。
ALTER TYPE ステートメントは、CREATE TYPE ステートメントと CREATE TYPE BODY ステートメントで作成された型に対して、以下の操作を実行できます:
型の変更。つまり、メンバー属性やメソッドの追加・削除です。
オブジェクトメンバー・サブプログラム仕様を追加することで、型の仕様を変更します。
仕様または型の本体を再コンパイルします。
型のバージョンを1にリセットし、今後の変更を考慮しなくなります。
前提条件
型が SYS スキーマにある場合は、SYSDBA 権限で接続する必要があります。それ以外の場合、型は現在ユーザーのスキーマに存在するか、ユーザーは CREATE TYPE または CREATE ANY TYPE システム権限を持っている必要があります。
構文
alter_type ::=
ALTER TYPE [ schema. ] type_name {alter_type_clause | type_compile_clause};
alter_type_clause ::=
{ alter_attribute_definition} [ dependent_handling_clause ];
alter_attribute_definition ::=
{ { ADD | MODIFY } ATTRIBUTE
{ attribute [ datatype ]
| ( attribute datatype [, attribute datatype ]... )
}
| DROP ATTRIBUTE
{ attribute
| ( attribute [, attribute ]... )
}
}
dependent_handling_clause ::=
{CASCADE}
type_compile_clause ::=
COMPILE [ DEBUG ] [ SPECIFICATION | BODY ] [ REUSE SETTINGS ]
パラメータの説明
alter_attribute_definition: UDTの属性を追加、削除、または変更するために使用します。同一のALTER TYPEステートメント内で複数の属性を追加、削除、または変更できますが、各属性は1回ずつのみ参照できます。ADD ATTRIBUTE: 属性を追加するために使用します。属性名は既存の属性やメソッドと競合してはならず、属性はローカル定義属性リストの末尾に追加されます。DROP ATTRIBUTE: 属性を削除するために使用します。削除する属性のデータ型を指定する必要はありませんが、すべての属性を削除することはできません。MODIFY ATTRIBUTE: スカラー属性のデータ型length、precision、またはscaleを変更するために使用します。現在、変更が可能な属性型はvarchar、varchar2、raw、numberです。属性データ型のlength、precision、またはscaleの増加のみが許可されています。scaleを増加させる際は、データ範囲の互換性を保証するためにprecisionも同時に増加させる必要があります。
dependent_handing_clause: 依存オブジェクト(その型に依存するテーブル、型など)を処理するための句です。ALTERのtypeが他のtypeに依存している場合は、明示的にCASCADE句を指定する必要があります。そうでない場合はエラーが発生します。
例
以下のコマンドを実行して、person_type 型に email という名前の新しい属性を追加します。データ型は varchar(100) です。
obclient> ALTER TYPE person_type ADD ATTRIBUTE email varchar(100);