ALTER SYNONYM は既存のシノニムを変更するSQL文である。
シノニムの参照先であるオブジェクトを変更または削除すると、そのシノニムは無効になる。無効となった要因を取り除いてから ALTER SYNONYM でシノニムをコンパイルすると、そのシノニムが有効になる。
自分のスキーマ内にあるプライベート・シノニムをコンパイルする。
ALTER SYNONYM example COMPILE
他人のスキーマ内にあるプライベート・シノニムをコンパイルする。
ALTER SYNONYM tsuka.example COMPILE
パブリック・シノニムをコンパイルする。
ALTER PUBLIC SYNONYM example COMPILE
自分のスキーマに含まれるプライベート・シノニムを変更するには、CREATE SYNONYM システム権限が必要である。
他人のスキーマに含まれるプライベート・シノニムを変更するには、CREATE ANY SYNONYM システム権限と DROP ANY SYNONYM システム権限が必要である。
パブリック・シノニムを変更するには、CREATE PUBLIC SYNONYM システム権限と DROP PUBLIC SYNONYM システム権限が必要である。
シノニムの種類 | スキーマ | 必要なシステム権限 |
---|---|---|
プライベート・シノニム | 自分 | CREATE SYNONYM |
他人 | CREATE ANY SYNONYM DROP ANY SYNONYM |
|
パブリック・シノニム | - | CREATE PUBLIC SYNONYM DROP PUBLIC SYNONYM |
シノニムが有効か無効かを判断するには ALL_OBJECTS、DBA_OBJECTS または USER_OBJECTS データディクショナリビューのSTATUS列を問い合わせる。
SELECT STATUS FROM USER_OBJECTS WHERE OBJECT_TYPE = 'SYNONYM' AND OBJECT_NAME = 'EXAMPLE'
無効なシノニムを調べるには、ALL_OBJECTS、DBA_OBJECTS または USER_OBJECTS データディクショナリビューのSTATUS列が INVALID の行をを問い合わせる。
SELECT OBJECT_NAME FROM USER_OBJECTS WHERE OBJECT_TYPE = 'SYNONYM' AND STATUS = 'INVALID'
ALL_OBJECTSは次の列を持つ。
列 | データ型 | 説明 |
---|---|---|
OWNER | VARCHAR2(30) | オブジェクトの所有者 |
OBJECT_NAME | VARCHAR2(30) | オブジェクトの名前 |
SUBOBJECT_NAME | VARCHAR2(30) | |
OBJECT_ID | NUMBER | |
DATA_OBJECT_ID | NUMBER | |
OBJECT_TYPE | VARCHAR2(19) | オブジェクトのタイプ
|
CREATED | DATE | |
LAST_DDL_TIME | DATE | |
TIMESTAMP | VARCHAR2(19) | |
STATUS | VARCHAR2(7) | オブジェクトの状態
|
TEMPORARY | VARCHAR2(1) | |
GENERATED | VARCHAR2(1) | |
SECONDARY | VARCHAR2(1) | |
NAMESPACE | NUMBER | |
EDITION_NAME | VARCHAR2(30) |
ALTER SYNONYMでシノニムの参照先を変更することはできない。シノニムの参照先を変更するには、DROP SYNONYMでシノニムを削除してから、CREATE SYNONYMでシノニムを作成し直す。