sql >> データベース >  >> RDS >> Oracle

Flyway 2.0.1でOracleシノニムを処理する方法は?

    最善の方法は、アプリケーションでスキーマ名を修飾することです。

    それが不可能で、アプリケーションがSQLのみ(PL / SQLではなく)を使用して「所有者」オブジェクトにアクセスする場合は、ログオン後トリガーのデフォルトスキーマを変更することで、シノニムをまったく回避できます。

    create or replace trigger USERX.a_logon_USERX
    after logon on USERX
    BEGIN
      EXECUTE IMMEDIATE ('ALTER SESSION SET current_schema=standard');
    END;
    

    ただし、アプリケーションがPL / SQLブロック( "begin ... end;")をデータベースに送信するときに、この手法が失敗することを理解するのは少し難しいです。 PL / SQLはコンパイルされているため、現在のスキーマを考慮することはできません。



    1. IsFinite()がPostgreSQLでどのように機能するか

    2. $_POSTに入力type=image値が見つかりません

    3. MySQL DATEDIFF()とTIMESTAMPDIFF():違いは何ですか?

    4. MySQL行からのQRコードの生成