3.2.1 ALTER INDEXの形式と規則
(1) 機能
CREATE INDEXで定義したインデクスの名称を変更します。
(2) 使用権限
- インデクスの所有者
-
自分が所有するインデクスだけ指定できます。
(3) 形式
ALTER INDEX 〔認可識別子.〕インデクス識別子 インデクス定義変更動作 インデクス定義変更動作::= インデクス名変更定義 インデクス名変更定義::=RENAME INDEX TO インデクス識別子 〔WITH PROGRAM〕
(4) オペランド
(b) インデクス名変更定義::=RENAME INDEX TO インデクス識別子 〔WITH PROGRAM〕
インデクスの名称を変更する場合に指定します。
- インデクス識別子
-
変更後のインデクスの名称を指定します。
インデクス識別子についての規則を次に示します。
-
CREATE INDEXで定義したB-treeインデクス,インデクス型を指定したインデクス,及び部分構造インデクスの名称を変更できます。
-
スキーマ内にあるインデクス,インデクス型を指定したインデクス,及び部分構造インデクスと同じ名称には変更できません。
-
一時インデクスの名称は指定できません。
-
- WITH PROGRAM
-
インデクスの名称を変更するときに,そのインデクスを使用する手続き,及びトリガの有効なSQLオブジェクトを無効にしたいときに指定します。
WITH PROGRAMを省略した場合,そのインデクスを使用する手続き,及びトリガの有効なSQLオブジェクトがあると,そのインデクスの定義は変更できません。
(5) 留意事項
-
Java手続き中では定義系SQLが実行できますが,Java手続きを呼び出す手続きが,インデクスを使用するSQLを発行している場合,呼び出されたJava手続き内でそのインデクスに対しALTER INDEXを発行しているとALTER INDEXはエラーになります。
-
ALTER INDEXは,OLTP下のX/Openに従ったUAPから指定できません。
-
WITH PROGRAMを指定して無効にした手続き,及びトリガのSQLオブジェクトを実行するためには,ALTER ROUTINE,ALTER PROCEDURE,又はALTER TRIGGERを実行して,手続き,及びトリガのSQLオブジェクトを再作成しておく必要があります。
-
WITH PROGRAMを指定して手続き,及びトリガの有効なSQLオブジェクトを無効にした場合,無効となった手続き,及びトリガに関するSQL_ROUTINE_RESOURCES表,SQL_TRIGGER_USAGE表,SQL_TRIGGER_COLUMNS表,及びSQL_ROUTINE_PARAMS表の行は削除します。
-
ALTER INDEX対象のインデクスを使用しないで,そのインデクスを定義している表をアクセスしている手続き,又はトリガが存在する場合,ALTER INDEXを実行すると,該当する手続き,又はトリガのSQLオブジェクト中のインデクス情報は無効になります。この場合,インデクス情報が無効な手続きの呼び出しは実行できますが,実行するたびにリコンパイルされるため性能が劣化します。また,インデクス情報が無効となった手続きを呼び出す手続き,又はトリガは実行できなくなります。そのため,インデクス情報が無効となった手続き,及びトリガに対してALTER ROUTINE,ALTER PROCEDURE,又はALTER TRIGGERを実行して,SQLオブジェクトを再作成する必要があります。なお,インデクス情報が無効かどうかはディクショナリ表SQL_ROUTINESのINDEX_VALID列を参照して確認できます。
-
データベース作成ユティリティ(pdload),及びデータベース再編成ユティリティ(pdrorg)を実行して,インデクス情報出力モードでインデクスを作成した場合,インデクスが作成される前にALTER INDEXを使用してインデクスの名称を変更すると,出力済みのインデクス情報ファイルではインデクスの一括作成ができなくなります。なお,誤って先にインデクスの名称を変更した場合は,ALTER INDEXでインデクスの名称を元に戻してからインデクスの一括作成を行い,その後で再度インデクスの名称を変更してください。
-
プラグインインデクスの遅延一括作成を行う場合,インデクスが作成される前にALTER INDEXを使用してプラグインインデクスの名称を変更すると,出力済みのインデクス情報ファイルではプラグインインデクスの一括作成ができなくなります。なお,誤って先にプラグインインデクスの名称を変更した場合は,プラグインインデクスの名称を元に戻してからプラグインインデクスの一括作成を行い,その後で再度プラグインインデクスの名称を変更してください。
-
未完状態のインデクス(EMPTY指定でCREATE INDEXした直後のインデクス)の名称をALTER INDEXで変更できます。
(6) 使用例
インデクス(IDX1)の名称を(IDX2)に変更します。
ALTER INDEX IDX1 RENAME INDEX TO IDX2