annotations_clause

目的

注釈は、アプリケーション・メタデータをデータベースに一元的に格納するメカニズムを提供し、アプリケーション、モジュールおよびマイクロサービス間で共有できるようにします。

CREATE文を使用して、作成時に所有する対象のスキーマ・オブジェクトに注釈を追加できます。

変更権限を持つサポート対象のスキーマ・オブジェクトに対しては、ALTER文を使用して注釈を追加および削除できます。注釈名をスキーマ名で修飾する必要はありません。スキーマ・オブジェクトで注釈が削除されるたびに、またはスキーマ・オブジェクト全体が削除されると、注釈の使用が更新されて削除が反映されます。

個々の注釈には名前とオプションの値があります。名前と値はどちらも自由形式テキストフィールドです。注釈は付加的です。つまり、単一のDDLの同じスキーマ・オブジェクトに複数の注釈を指定できます。

初めてスキーマ・オブジェクトに注釈名を指定すると、注釈が自動的に作成されます。サポート対象のスキーマ・オブジェクトには、表、ビュー、マテリアライズド・ビューおよび索引があります。注釈は、注釈が追加されているデータベース・オブジェクトに対する下位要素として表されます。スキーマ・オブジェクトで注釈が削除されるたびに、またはスキーマ・オブジェクト全体が削除されると、注釈の使用が更新されて削除が反映されます。

ディクショナリ・ビューは、すべてのスキーマ・オブジェクトにわたって注釈とその使用のリストを追跡します。ディクショナリ・ビューUSER|ALL|DBA_ANNOTATIONS_USAGEを問い合せて、スキーマ・オブジェクトの注釈をリストできます。

前提条件

オブジェクトに注釈を指定するには、スキーマ・オブジェクトを所有するか、スキーマ・オブジェクトに対するALTER権限が必要です。

構文

annotations_clause::=

annotations_list::=

annotation_name::=

annotation_value::=

セマンティクス

annotations_clause

ADDDROPまたはREPLACEを指定して、注釈を作成、削除または変更します。

  • ADDは、annotation_nameを作成します。これは、注釈の前にキーワードが指定されていないときのデフォルトです。オブジェクトにすでにこの名前の注釈がある場合、文はエラーになります。

    ADD IF NOT EXISTSを使用して、文をエラーなしで完了できるようにします。annotation_nameがすでに存在する場合は、IF NOT EXISTS句の使用時に元の値を保持します。

    ADD [IF NOT EXISTS]は、CREATE文で使用する唯一の有効なオプションです。

  • DROPは、オブジェクトからannotation_nameを削除します。オブジェクトにこの名前の注釈がない場合は、エラーが発生します。DROP IF EXISTSを使用して、文をエラーなしで完了できるようにします。この句は、ALTER文でのみ有効です。

  • REPLACEは、annotation_nameannotation_valueを指定された値に変更します。この値を省略すると、annotation_nameの既存の値がすべて削除されます。annotation_nameが存在しない場合、文はエラーになります。この句は、ALTER文でのみ有効です。

annotation_nameは、最大1024文字の識別子です。注釈名が予約語の場合は、二重引用符で囲んで指定する必要があります。二重引用符で囲まれた識別子を使用すると、識別子に空白文字を含めることもできます。ただし、空白文字のみの識別子は受け入れられません。

注釈は、名前/値ペアまたは名前自体です。名前とオプションの値は、自由形式のテキスト・フィールドです。値は最大4000文字です。注釈Display_Label, 'Employee Salary'には名前と値がありますが、注釈UI_Hiddenには名前のみがあり、値は不要です。UI_Hiddenは、列を非表示にすることを指定するために使用される独立した注釈です。

表への注釈の追加

次の例では、値SortおよびGroupを持つ2つの操作と、値を持たないスタンドアロンのHiddenを表t1に追加します:

CREATE TABLE t1 (T NUMBER) ANNOTATIONS(Operations '["Sort", "Group"]', Hidden);

次の例に示すように、注釈の前にキーワードADD (何も指定されていない場合のデフォルトの操作)を付けることができます。

CREATE TABLE t1 (T NUMBER) ANNOTATIONS (ADD Hidden);

表レベルでの注釈の変更

次の例では、t1からすべての注釈を削除します:

ALTER TABLE t1 ANNOTATIONS(DROP Operations, DROP Hidden);

表の列への注釈の追加

CREATE TABLE t1 (T NUMBER ANNOTATIONS(Operations 'Sort' , Hidden) );

表および列への注釈の追加

CREATE TABLE employee (
  id NUMBER(5)
    ANNOTATIONS(Identity, Display 'Employee ID', "Group" 'Emp_Info'),
  ename VARCHAR2(50)
    ANNOTATIONS(Display 'Employee Name', "Group" 'Emp_Info'),
  sal NUMBER
    ANNOTATIONS(Display 'Employee Salary', UI_Hidden)
) ANNOTATIONS (Display 'Employee Table');

列レベルでの注釈の変更

ALTER TABLE employee
  MODIFY ename ANNOTATIONS (
    DROP "Group",
    DROP IF EXISTS missing_annotation,
    REPLACE Display 'Emp name'
  );