Forguncy 10 オンラインヘルプ
アプリの開発 / 外部連携と入出力 / 外部データベース / 外部データベースへの変換
このトピックで
    外部データベースへの変換
    このトピックで

    内部データベースのテーブルを、指定した外部データベース上のテーブルへと変換することができます。最初は内部データベースを使用して作成していたアプリケーションを、後から外部データベースへと移行する必要がある場合に本機能を使用することを検討してください。

    変換先の対象となる外部データベースは、SQL Server、Oracle Database、MySQL、PostgreSQLです。本機能を使用するためには、それぞれのデーターベースにおいてテーブルに関するすべての権限を持つ接続情報を使用する必要があります。なお、Oracle Databaseの場合、「DBA_Tables」へのアクセス権も必要であることに注意してください。

    注意:

    • 「外部データベースへ変換」を実施後、テーブルはリンクテーブルになります。

    • 「外部データベースへ変換」を実施後、変換されたリンクテーブルは「構造変更の許可」がチェックされたテーブルとなり、Forguncyから外部データベースにシステム上必要なフィールドや新たなテーブルを生成することがあります。

    • 内部データベースで設定していた次の機能は可能な限り変換先でも維持されます。

      • ワークフロー、権限設定、フィールドの関連付け、数式フィールド、集計フィールド、データ連結

    • ユーザー情報ビューは変換対象に含まれません。

    • ワークフロー履歴ビューは接尾辞「_FGC_WHT」が付加されたテーブルとして作成されます。

    • 外部キー制約は変換対象に含まれません。

    • ID列の開始番号は移行先のデータベースの仕様や既定値に依存します。

    • Oracle Databaseへの変換の場合、日付/時刻型フィールド、および時刻型フィールドの既定値設定は変換動作においてサポートされません。そのため、変換前にそれら既定値を削除する必要があります。 

    • 変換元のテーブルを使ってビューを作成している場合、そのビューは使うことができなくなります。

    • 次の外部データベースでは、変換されたテーブルに既定のスキーマが使用されます。

      • SQL Server:dbo

      • PostgreSQL:public

    本機能を使用して内部データベースを外部データベースへと変換した場合、変換した内部データベースのテーブルは削除されます。本機能を使用する前に、プロジェクトファイルをコピーし、バックアップを必ず行うようにしてください。

    1. [データ]リボンタブの[外部データベースへ変換]をクリックします。

    2. 外部データベースへの接続情報が存在しない場合、次のダイアログメッセージが表示されるので、[OK]ボタンをクリックします。

      外部データベースへの接続情報がすでに存在する場合、本ステップとステップ3は省略されます。

    3. 変換先の外部データベース接続情報を設定し、[OK]ボタンをクリックします。

    4. 変換したいテーブルを選択肢、[OK]ボタンをクリックします。

      [変換先の外部データベース]が複数存在する場合には、対象のデータベースを選択します。

      テーブルのみ変換可能で、ビューは一覧に表示されません。また、外部キー制約は変換対象となりません。ワークフローが設定されているテーブルを選択した場合、ワークフローの履歴を管理する内部的なテーブルも外部データベース上に作成されます。

      選択したテーブルと同名のテーブルが変換先の外部データベース上に存在する場合、次のダイアログメッセージが表示されます。[キャンセル]ボタンをクリックした場合、処理は中止されます。

    5. 選択したテーブルが外部データベース上のテーブルへと変換され、[ナビゲーション ウィンドウ]上ではリンクテーブルとして表示されます。

      次の図のように、対象の外部データベース上にテーブルが作成され、データが移行されていることを確認できます。

      なお、Oracle Databaseのテーブルへと変換した場合、新規レコードの作成時に「ID」フィールドがオートインクリメント(自動採番)されるようにはなっていません。Forguncyの自動採番の機能を使用して一意な値が設定されるようにするか、Oracle Databae側で次のコードを参考に自動採番を行うトリガーを作成する必要があります。

      作成するトリガーの一例

      コードのコピー
      CREATE SEQUENCE table1_seq START WITH 1;
      
      CREATE OR REPLACE TRIGGER table1_id_trigger
      BEFORE INSERT ON table1
      FOR EACH ROW
      
      BEGIN
        SELECT table1_seq.NEXTVAL
        INTO   :new.id
        FROM   dual;
      END;