2017-12-20 9 views
0

私はマイクロサービスのバックエンドにPostgresを使用しています。データベースは小さく(ish)、シンプルに設計されています。Postgres関数で明示的なスキーマ接頭辞を使用するのはなぜですか?

私達は私達のデータベースに4つのスキーマがあります。ライブ

  1. :アプリケーション
  2. UTESTによって使用されるすべての機能、テーブル、など:ユニットテスト機能/フレームワーク
  3. :ユニットは
  4. testframeをテスト
  5. テストデータ:データベースは、生産に出荷されている場合

共通のテストデータを作成する機能ONLY「ライブ」スキーマは保持され、すべてのテストスキーマは削除されます。

私の質問は:「ライブ」スキーマの機能が明示的に「ライブ」を使用する理由はありますか?テーブルを参照して他の関数を呼び出すときのスキーマ接頭辞?

多くのグーグルの後、私はスキーマの接頭辞を明示的に使用するための引数を作るのに苦労しています。

ありがとうございます、ご意見ありがとうございます。

+0

'show search_path;'の結果は何ですか? – Abelisto

+0

show search_pathは、本番環境では常に「ライブ」を返します。 – MrSuaveh

答えて

0

オブジェクトをスキーマ名で常に修飾することは、誤って他のスキーマ内の同じ名前の他のオブジェクトを使用できないようにするための良い方法です。たとえば、スキーマpg_catalogは常にsearch_pathにあるため、システムオブジェクトを選択することができます。

関連する問題