属性を削除するたびに、Teradata Databaseは、関連するオブザーバー メソッドとミュテーター メソッドを自動的に削除します。
次のようなルールが、属性の削除に適用されます。
- 指定するUDTはSTRUCTURED型でなければなりません。
- 指定するUDTは、他のいかなるデータベース オブジェクトから参照されてもなりません。
他のデータベース オブジェクトから参照されている(例えば何らかのテーブルの列データ型として使用されている) UDTから属性を削除しようとすると、システムはリクエスト側にエラーを返します。
具体的に説明すると、リクエストは以下のいずれの状況でもアボートします。- データベースの中に、列のうちの1つのデータ型が指定のUDTであるテーブルが含まれている場合。
- 属性のうちの1つのデータ型が指定のUDTである、STRUCTURED型UDTがある場合。
- 指定のUDTがユーザー定義キャストで参照されている場合。
- データベースの中に、指定のUDTを参照するメソッドまたはUDFがある場合。
- UDTに定義された順序付けまたはデータ変換グループがある場合。
- 削除しようとする属性はUDTの唯一の属性であってはなりません。
UDT開発者は、STRUCTURED型UDTから属性を削除する前に、以下のデータベース オブジェクトすべてに対して必要なクリーンアップすべてを実行する責任があります。
- そのUDTと関連付けられたキャスト。
- UDTの順序付け。
- UDTのデータ変換。
- このUDTをデータ型とする列を持ったテーブル。
- このUDTを使用するSTRUCTURED型UDT。
- このUDTをパラメータ データ型として使用するUDFおよびメソッド。
以下のデータベース オブジェクトが属性に関係するオブザーバーまたはミュテーター メソッドを参照している場合でも、その属性をSTRUCTURED型UDTから削除することができます。
- キャスト
- マクロ
- プロシージャ
- トリガー
- ビュー
しかし、影響を受けるいずれかのデータベース オブジェクトを実行しようとすると、システムはリクエスト側にエラーを返します。