RENAME

目的

ノート:

RENAME文はロールバックできません。

RENAME文を使用すると、表、ビュー、順序またはプライベート・シノニムの名前を変更できます。

  • 古いオブジェクトの整合性制約、索引および権限付与は、新しいオブジェクトに自動的に移行されます。

  • 名前を変更した表を参照するビュー、シノニム、ストアド・プロシージャ、ストアド・ファンクションなど、名前を変更したオブジェクトに依存するオブジェクトはすべて無効になります。

関連項目:

「CREATE SYNONYM」および「DROP SYNONYM」を参照してください。

前提条件

オブジェクトが自分のスキーマ内にある必要があります。

構文

セマンティクス

old_name

既存の表、ビュー、順序またはプライベート・シノニムの名前を指定します。

new_name

既存のオブジェクトに割り当てる新しい名前を指定します。新しい名前は、同じネームスペース内の他のスキーマ・オブジェクトに使用されている名前以外にする必要があります。また、スキーマ・オブジェクトのネーミング規則に従って指定する必要があります。

オブジェクトの名前変更の制限事項

オブジェクトの名前変更には、次の制限事項があります。

  • パブリック・シノニムの名前は変更できません。そのかわり、該当するパブリック・シノニムを削除し、新しい名前で別のパブリック・シノニムを作成してください。

  • 依存表または依存する有効なユーザー定義オブジェクト型を持つ型のシノニムの名前は変更できません。

データベース・オブジェクトの名前変更: 例

次の例では、サンプル表hr.departmentsのコピーを使用します。次の文は、表の名前をdepartments_newからemp_departmentsに変更します。

RENAME departments_new TO emp_departments;

この文では列名を直接変更できません。ただし、ALTER TABLE ... rename_column_clauseを使用すると、列の名前を変更できます。

関連項目:

rename_column_clause

列名を変更するもう1つの方法は、AS副問合せを指定したCREATE TABLE文とともに、RENAME文を使用する方法です。この方法は、単に列の名前を変更するのではなく、表の構造を変更する場合に有効です。次の文は、サンプル表hr.job_historyを再作成し、列の名前をdepartment_idからdept_idに変更します。

CREATE TABLE temporary 
   (employee_id, start_date, end_date, job_id, dept_id) 
AS SELECT 
     employee_id, start_date, end_date, job_id, department_id
FROM job_history; 

DROP TABLE job_history; 

RENAME temporary TO job_history; 

前述の例の場合、job_history表に定義されている整合性制約は失われます。これらの整合性制約は、ALTER TABLE文を使用して、新しいjob_history表に再定義する必要があります。