oracle

Oracle テーブルとカラムへコメントを追加する

テーブル、Viewへのコメント追加

viewに対してもなぜかcomment on tableで作成できます。comment on viewにするとエラーです。(ORA-32594: COMMENTコマンドのオブジェクト・カテゴリが無効です)その割には、マテリアライズドビューに対するコメントはcomment ON MATERIALIZED VIEWが用意されています。

テーブル、VIEWへのコメント追加
comment on table OY_REGION is '地域マスタ'
;
テーブル、VIEWのコメント確認

テーブルとVIEWへのコメント確認はDBA_TAB_COMMENTSで行います。

select t.OWNER,t.TABLE_NAME,t.TABLE_TYPE,t.COMMENTS
from DBA_TAB_COMMENTS t where t.OWNER='DABADA' and t.TABLE_NAME ='OY_REGION'
;
実行例
-- テーブルへのコメント追加
--
SQL> comment on table OY_REGION is '地域マスタ'
  2  ;

コメントが作成されました。

-- テーブルコメントの確認
--
SQL> COLUMN TABLE_TYPE FORMAT A8
SQL> select t.OWNER,t.TABLE_NAME,t.TABLE_TYPE,t.COMMENTS
  2  from DBA_TAB_COMMENTS t where t.OWNER='DABADA' and t.TABLE_NAME ='OY_REGION'
  3  ;

OWNER      TABLE_NAME           TABLE_TY COMMENTS
---------- -------------------- -------- --------------------
DABADA     OY_REGION            TABLE    地域マスタ

SQL>

マテリアライズドビューへのコメント追加

マテビューは通常のテーブルやVIEWと異なり、作成したタイミングでコメントが入っています。

マテビューへのコメント追加
COMMENT on MATERIALIZED VIEW DABADA.PREFECTURE_MMV_T is '都道府県MMV'
;
マテビューのコメント確認

マテビューへのコメント確認はDBA_MVIEW_COMMENTSで行います。

select OWNER,MVIEW_NAME,COMMENTS from DBA_MVIEW_COMMENTS 
where  OWNER = 'DABADA' and MVIEW_NAME = 'PREFECTURE_MMV_T'
;
実行例
-- 変更前に確認すると既にデフォルトで入っています。
--
SQL> select OWNER,MVIEW_NAME,COMMENTS from DBA_MVIEW_COMMENTS
  2  where  OWNER = 'DABADA' and MVIEW_NAME = 'PREFECTURE_MMV_T'
  3  ;

OWNER      MVIEW_NAME               COMMENTS
---------- ------------------------ ------------------------------------------------------------
DABADA     PREFECTURE_MMV_T         snapshot table for snapshot DABADA.PREFECTURE_MMV_T

-- 適切なコメントを入れます
-- 
SQL> COMMENT on MATERIALIZED VIEW DABADA.PREFECTURE_MMV_T is '都道府県MMV'
  2  ;

コメントが作成されました。

-- 確認します
--
SQL> select OWNER,MVIEW_NAME,COMMENTS from DBA_MVIEW_COMMENTS
  2  where  OWNER = 'DABADA' and MVIEW_NAME = 'PREFECTURE_MMV_T'
  3  ;

OWNER      MVIEW_NAME               COMMENTS
---------- ------------------------ ------------------------------------------------------------
DABADA     PREFECTURE_MMV_T         都道府県MMV

SQL>

カラムのコメント確認

テーブル、VIEW、マテビュー何れのカラムもDBA_COL_COMMENTSにて確認できます

select OWNER,TABLE_NAME,COLUMN_NAME,COMMENTS
from DBA_COL_COMMENTS where OWNER='DABADA' and TABLE_NAME='PREFECTURE_MMV_T'
;

カラムへのコメント追加

comment on column product_mst.category is 'カテゴリー'
;

カラムへのコメント確認はDBA_COL_COMMENTSで行います。

コメントの削除

違和感のある仕様なのですが、テーブル名、カラム名何れも「空文字」でクリアする事になります。ちなみにNULLとすると(ORA-01780: 文字列リテラルが必要です)エラーになります。

comment on column PREFECTURE_MMV_T.REGION_NAME is ''
;
-- コメント確認
-- テーブル、VIEW、マテビュー共通
-- カラムはマテビューと異なりデフォルトは空っぽです。
--
SQL> select OWNER,TABLE_NAME,COLUMN_NAME,COMMENTS
  2  from DBA_COL_COMMENTS where OWNER='DABADA' and TABLE_NAME='PREFECTURE_MMV_T'
  3  ;

OWNER      TABLE_NAME           COLUMN_NAME          COMMENTS
---------- -------------------- -------------------- --------------------
DABADA     PREFECTURE_MMV_T     PREFID
DABADA     PREFECTURE_MMV_T     NAME
DABADA     PREFECTURE_MMV_T     NAME_R
DABADA     PREFECTURE_MMV_T     REGION_NAME

-- コメント追加
--
SQL> comment on column PREFECTURE_MMV_T.PREFID is '都道府県ID'
  2  ;

コメントが作成されました。

SQL> comment on column PREFECTURE_MMV_T.NAME is '都道府県名'
  2  ;

コメントが作成されました。

SQL> comment on column PREFECTURE_MMV_T.NAME_R is '都道府県英字'
  2  ;

コメントが作成されました。

SQL> comment on column PREFECTURE_MMV_T.REGION_NAME is '地域'
  2  ;

コメントが作成されました。

-- 再度カラムコメント確認
--
SQL> select OWNER,TABLE_NAME,COLUMN_NAME,COMMENTS
  2  from DBA_COL_COMMENTS where OWNER='DABADA' and TABLE_NAME='PREFECTURE_MMV_T'
  3  ;

OWNER      TABLE_NAME           COLUMN_NAME          COMMENTS
---------- -------------------- -------------------- --------------------
DABADA     PREFECTURE_MMV_T     PREFID               都道府県ID
DABADA     PREFECTURE_MMV_T     NAME                 都道府県名
DABADA     PREFECTURE_MMV_T     NAME_R               都道府県英字
DABADA     PREFECTURE_MMV_T     REGION_NAME          地域

SQL> comment on column PREFECTURE_MMV_T.REGION_NAME is ''
  2  ;

コメントが作成されました。

-- 試しにREGION_NAMEカラムのコメントを消してみます
-- 
SQL> select OWNER,TABLE_NAME,COLUMN_NAME,COMMENTS
  2  from DBA_COL_COMMENTS where OWNER='DABADA' and TABLE_NAME='PREFECTURE_MMV_T'
  3  ;

OWNER      TABLE_NAME           COLUMN_NAME          COMMENTS
---------- -------------------- -------------------- --------------------
DABADA     PREFECTURE_MMV_T     PREFID               都道府県ID
DABADA     PREFECTURE_MMV_T     NAME                 都道府県名
DABADA     PREFECTURE_MMV_T     NAME_R               都道府県英字
DABADA     PREFECTURE_MMV_T     REGION_NAME

SQL>
SQL*Plus用
set lin 300
COLUMN OWNER FORMAT A10
COLUMN MVIEW_NAME FORMAT A24
COLUMN COMMENTS  FORMAT A60
COLUMN TABLE_NAME  FORMAT A20
COLUMN COLUMN_NAME  FORMAT A20
COLUMN COMMENTS  FORMAT A20
スポンサーリンク
コピペで使う