ALTER(名前変更)
ALTER(名前変更)ステートメントにより、インデックス、ユーザー定義関数、ストアド プロシージャ、テーブル、トリガー、またはビューの名前を変更できます。
構文
ALTER オブジェクトの種類 RENAME 修飾されたオブジェクト名 TO 新しいオブジェクト名
オブジェクトの種類 ::= INDEX
| FUNCTION
| PROCEDURE
| TABLE
| TRIGGER
| VIEW
修飾されたオブジェクト名 ::= データベース名.テーブル名.オブジェクト名
| データベース名.オブジェクト名
| テーブル名.オブジェクト名
| オブジェクト名
データベース名, テーブル名, オブジェクト名, 新しいオブジェクト名 ::= ユーザー定義名
備考
以下のオブジェクトは、PSQL v9 より前のバージョンの PSQL で作成されている場合には、名前を変更できません。
•ストアド プロシージャ
•トリガー
•ビュー
PSQL v9 より前のリリースでは、これらのオブジェクトの名前によるシステム テーブルのインデックスは変更不可として作成されました。これらのオブジェクトのインデックスは、PSQL v9 と共に変更可能になりました。
どのオブジェクトの種類もデータベース名を使って修飾できます。ただし、INDEX または TRIGGER オブジェクトを修飾する場合は、テーブル名も含める必要があります。テーブル名は、INDEX および TRIGGER オブジェクトを修飾する場合にのみ使用できます。
ALTER ステートメントで、データベース内のオブジェクトの名前を変更することができます。変更するオブジェクトが、現在セッションが接続されていないデータベース内にある場合は、データベース名を使ってオブジェクトの種類を修飾する必要があります。名前変更されたオブジェクトは、同一データベース内にデータベース名として現れます。
修飾子のデータベース名を省略すると、現在セッションが接続されているデータベースを基にオブジェクトが識別され、名前が変更されます。
新しいオブジェクト名の修飾子にデータベース名を使用してはいけません。注意してください。新しい名前のコンテキストは、元の名前のコンテキストと常に一致させます。
メモ:データベース エンジンは、名前変更されたオブジェクトの依存関係をチェックしません。オブジェクトの名前を変更したら、必ず、以前(変更元)の名前で依存関係が設定されているすべてのオブジェクトを適切に修正してください。たとえば、あるトリガーが t1 という名前のテーブルを参照しているとします。テーブル t1 の名前を t5 に変更すると、トリガーには正しく実行されない不正な SQL が含まれることになります。
さらに、ストアド プロシージャ、ユーザー定義関数、またはトリガーの名前を変更した場合は、DDF 内のそのオブジェクトの元の定義は変更されません。たとえば、proc1 というストアド プロシージャを作成し、後で名前を proc2 に変更したとします。プロシージャのシステム テーブル内の Xp$Misc に格納されている定義は、まだ proc1 のままです。この相違は、オブジェクト(この場合はストアド プロシージャ)の機能には影響しません。データベース エンジンは、Xp$Name および Xp$Id 内の値を使用してストアド プロシージャを識別します。関数およびトリガー用のシステム テーブル内の同様のフィールドも同じです。
オブジェクトの名前は、psp_rename システム ストアド プロシージャを使用して変更することもできます。
例
次のステートメントは、現在セッションが接続されているデータベースにあるインデックス suplid の名前を vendor_id へ変更します。インデックスが適用されているテーブルは region5 です。
ALTER INDEX RENAME region5.suplid TO vendor_id
次のステートメントは、データベース foodforlife にあるユーザー定義関数 calbrned の名前を caloriesburned へ変更します。
ALTER FUNCTION RENAME foodforlife.calbrned TO caloriesburned
次のステートメントは、データベース international にあるストアド プロシージャ checkstatus の名前を isEligible へ変更します。
ALTER PROCEDURE RENAME international.checkstatus TO isEligible
次のステートメントは、現在セッションが接続されているデータベースにあるテーブル payouts の名前を accts_payable へ変更します。
ALTER TABLE RENAME payouts TO accts_payable
次のステートメントは、データベース electronics のテーブル domestic にあるトリガー testtrig3 の名前を new_customer へ変更します。
ALTER TRIGGER RENAME electronics.domestic.testtrig3 TO new_customer
次のステートメントは、現在セッションが接続されているデータベースにあるビュー suplrcds の名前を vendor_codes へ変更します。
ALTER VIEW RENAME suplrcds TO vendor_codes
関連項目