スケーラブルデータベースサーバ HiRDB Version 8 システム導入・設計ガイド(UNIX(R)用)

[目次][索引][前へ][次へ]

13.20.7 検査制約表の64ビットモードへの移行(HP-UX版,Solaris版,及びAIX版限定)

HiRDBを32ビットモードから64ビットモードへ移行する場合,32ビットモードで定義した検査制約表に挿入や更新をするとエラーになります。32ビットモードで定義した検査制約表を64ビットモードで挿入や更新できるようにするには,64ビットモードでHiRDBを再開始後,検査制約表を再定義してください。検査制約表の64ビットモードへの移行の基本的な流れを次の図に示します。

図13-42 検査制約表の64ビットモードへの移行の基本的な流れ

[図データ]

  1. 検査制約表の有無判定
    検査制約表の有無を確認するため,次のSQLを実行します。
     
    SELECT TABLE_SCHEMA,TABLE_NAME FROM MASTER.SQL_TABLES WHERE N_CHECK > 0
     
    結果行数が1以上であれば,検査制約表があります。また,検索結果のTABLE_SCHEMAが検査制約表の所有者,TABLE_NAMEが検査制約表の表名になります。
  2. ビュー表の有無判定
    検査制約表を削除すると,検査制約表を使用したビュー表も削除されます。そのため,検査制約表を使用したビュー表があるかどうかを確認する必要があります。検査制約表を使用したビュー表の有無を確認するため,次のSQLを実行します。
     
    SELECT VIEW_SCHEMA,VIEW_NAME FROM MASTER.SQL_VIEW_TABLE_USAGE
        WHERE BASE_OWNER=検査制約の表の所有者 AND TABLE_NAME=検査制約の表名
     
    結果行数が1以上であれば,検査制約表を使用したビュー表があります。また,検索結果のVIEW_SCHEMAがビュー表の所有者,VIEW_NAMEがビュー表名になります。
  3. ビュー定義文の生成
    pddefrevコマンド(定義系SQLの生成)でビュー定義文を生成してください。
  4. 参照表の有無判定
    検査制約表を削除する場合,主キーが定義されていて,かつ主キーを参照する参照表が定義されていると,その検査制約表は削除できません。そのため,削除する表の主キーを参照する参照表を削除する必要があります。検査制約表の主キーを参照する参照表の有無を確認するため,次のSQLを実行します。
     
    SELECT CONSTRAINT_SCHEMA,TABLE_NANE 
        FROM MASTER.SQL_REFERENTIAL_CONSTRAINTS
          WHERE R_OWNER= 検査制約の表の所有者 AND R_TABLE_NAME=検査制約の表名
     
    結果行数が1以上であれば,参照表があります。また,検索結果のCONSTRAINT_SCHEMAが参照表の所有者,TABLE_NANEが参照表の表名になります。
  5. ビュー表の有無判定
    参照表を削除すると,参照表を使用したビュー表も削除されます。そのため,参照表を使用したビュー表があるかどうかを確認する必要があります。参照表を使用したビュー表の有無を確認するため,次のSQLを実行します。
     
    SELECT VIEW_SCHEMA,VIEW_NAME FROM MASTER.SQL_VIEW_TABLE_USAGE
        WHERE BASE_OWNER=参照表の所有者 AND TABLE_NAME=参照表の表名
     
    結果行数が1以上であれば,参照表を使用したビュー表があります。また,検索結果のVIEW_SCHEMAがビュー表の所有者,VIEW_NAMEがビュー表名になります。
  6. ビュー定義文の生成
    pddefrevコマンド(定義系SQLの生成)で検査制約表を参照する参照表を使用したビュー定義文を生成してください。
  7. 表定義文の生成,データのアンロード,参照表の削除
    pddefrevコマンド(定義系SQLの生成)で参照表の表定義文を生成してください。表定義文を生成後,削除する参照表のデータをアンロードして,参照表を削除してください。
  8. 表定義文の生成,データのアンロード,検査制約表の削除
    pddefrevコマンド(定義系SQLの生成)で検査制約表の表定義文を生成してください。表定義文を生成後,削除する検査制約表のデータをアンロードして,検査制約表を削除してください。
  9. 検査制約表,インデクスの再定義
    8.で生成した表の表定義文に検査制約表,及びインデクスを再定義してください。
  10. 参照表の有無判定
    9.で再定義した検査制約表を参照する参照表の有無を4.と同様にして確認してください。
  11. 参照表,インデクスの再定義
    9.で再定義した検査制約表を参照する参照表がある場合,7.で生成した表の表定義文に参照表,及びインデクスを再定義してください。
  12. ビュー表の再定義
    検査制約表を使用したビュー表,又は参照表を使用したビュー表をがある場合,3.,6.で生成したビュー表の定義文にビュー表を再定義してください。
  13. ALTER ROUTINEの実行
    表,ビュー表などの削除によって関数が無効状態になっている可能性があるため,定義系SQLのALTER ROUTINEを実行してください。
  14. 参照表,検査制約表へのデータのリロード
    再定義した表にデータをリロードしてください。