RENAME

RENAME ステートメントは、表、ビュー、または索引の名前を変更します。 表、ビュー、または索引の名前またはシステム・オブジェクト名 (あるいは 、その両方) を変更できます。

呼び出し

このステートメントは、アプリケーション・プログラムに組み込むことができ、また対話式に呼び出すこともできます。 これは、動的に準備できる実行可能ステートメントです。

権限

このステートメントの権限 ID が保持する特権には、少なくとも以下の 1 つ が含まれていなければなりません。

  • 次のシステム権限
    • オブジェクト名を変更する場合、
      • 名前を変更する表、ビュー、または索引に対する *OBJMGT システム権限。
      • 名前を変更する表、ビュー、または索引が入っているスキーマに対する USAGE 特権。
    • オブジェクトのシステム名を変更する場合、
      • 名前を変更する表、ビュー、または索引に対する *OBJMGT システム権限。
      • 名前を変更する表、ビュー、または索引が入っているスキーマに対する USAGE 特権および *UPD システム権限。
  • データベース管理者権限

構文

構文図を読む構文図をスキップする
             .-TABLE-.                     
>>-RENAME--+-+-------+--+-table-name-+-+------------------------>
           |            '-view-name--' |   
           '-INDEX--index-name---------'   

>--TO--+-target-identifier--+-------------------------------------------+-+-><
       |                    '-FOR SYSTEM NAME--system-object-identifier-' |   
       '-SYSTEM NAME--system-object-identifer-----------------------------'   

説明

TABLE table-name または view-name
名前の変更をする表またはビューを示します。table-name または view-name は、 現行サーバーにある表またはビューを示すものでなければなりません。しかし、カタログ表または宣言済み一時表を示すものであってはなりません。 指定された名前が別名であっても構いません。指定した表またはビューは、新しい名前に変更されます。 その表あるいはビューに関する特権、制約、索引、トリガー、ビュー、および論理ファイルはすべてそのままの状態に保持されます。

該当の表あるいはビューを参照するアクセス・プランはいずれも、 そのアクセス・プランを使用するプログラムが次回実行される時に再度暗黙的に準備されます。 プログラムは元の名前で表あるいはビューを参照するので、その時に元の名前の表あるいはビューが存在しない場合、 エラーが戻されます。

INDEX index-name
名前を変更する索引を示します。この索引名 は、現行サーバーに存在している索引を示すものでなければなりません。指定した索引は、 新しい名前に変更されます。

この索引を参照するアクセス・プランは、名前変更によって影響は受けません。

target-identifier
それぞれ、表、ビュー、索引の新しい表名ビュー名索引名 を 示します。target-identifier は、現行サーバーに既に存在する表、ビュー、別名、または索引と同一であってはなりません。target-identifier は、非修飾 SQL ID でなければなりません。
SYSTEM NAME system-object-identifier
それぞれ、表、ビュー、索引の、新しいシステム・オブジェクト ID を示します。 システム・オブジェクト ID は、現行サーバーに 既に存在する表、ビュー、別名、または索引と同一であってはなりません。 システム・オブジェクト ID は、非修飾システム ID でなければなりません。

オブジェクトの名前とオブジェクトのシステム名が同一であり、 target-identifier が指定されていない場合、 system-object-identifier を指定すると、 それが新規の名前およびシステム・オブジェクト名になります。 それ以外の場合には、システム・オブジェクト ID の指定は、オブジェクトのシステム名だけに影響を与え、オブジェクトの名 前には影響を与えません。

target-identifiersystem-object-identifier の両方が指定されている場合、両方を有効なシステム・オブジェクト名にすることはできません。

ステートメントの効果: 指定した表、ビュー、または索引が新しい名前に変更されます。名前変更された表では、その表のすべての特権と索引が保持されます。 名前変更された索引では、すべての特権が保持されます。

パッケージとアクセス・プランの無効化: その表を参照するアクセス・プランは、すべて無効になります。 詳しくは、パッケージとアクセス・プランを参照してください。

別名に関する考慮事項: table-name の別名が指定されている場合、 その表は現行サーバーに存在していなければならず、その別名により識別される表が名前変更されます。 その別名自体の名前は変更されないので、名前変更の後も引き続き古い表名を 参照することになります。

RENAME ステートメントを使用して別名の名前を変更するためのサポートはありません。 別名が参照する名前を変更するには、その別名を除去してから再作成する必要があります。

名前変更の新規: 名前変更の操作は、指定された新しい名前に応じて実行されます。

  • 新しい名前が有効なシステム ID の場合、
    • 代替名がある場合は、それが除去されます。
    • システム・オブジェクト名は、新しい名前に変更されます。
  • 新しい名前が有効な ID でない場合、
    • 代替名が追加されるか、新しい名前に変更されます。
    • システム・オブジェクト名 (表またはビューの) が、名前を変更する表、 ビューまたは索引として指定された場合、新しいシステム・オブジェクト名が生成されます。 表名の生成規則についての詳細は、表名の生成の規則を参照してください。

表名 の別名が指定されている場合は、その別名は 現行サーバーに存在していなければならず、そしてその別名により識別され る表が名前変更されます。 その別名自体の名前は変更されないので、名前変更の後も引き続き古い表を 参照することになります。 別名の名前を変更するためのサポートはありません。

例 1: EMPLOYEE 表の名前を CURRENT_EMPLOYEES に変更します。

   RENAME TABLE EMPLOYEE
   TO CURRENT_EMPLOYEES

例 2: XEMP1 という EMPNO を使用する固有索引の名前を UXEMPNO に変更します。

   RENAME INDEX XEMP1
     TO UXEMPNO

例 3: MY_IN_TRAY という名前の表を MY_IN_TRAY_94 に名前変更します。 システム・オブジェクト名は、そのまま変更されません (MY_IN_TRAY)。

   RENAME TABLE MY_IN_TRAY TO MY_IN_TRAY_94
     FOR SYSTEM NAME MY_IN_TRAY