Postgresql Şema Yolunu Kalıcı Olarak Ayarla


136

Postgres'te şema yolunu ayarlamam gerekiyor, böylece her seferinde şema nokta tablosunu belirtmem schema2.table. Şema yolunu ayarlayın:

SET SCHEMA PATH a,b,c

Mac'te yalnızca bir sorgu oturumu için çalışıyor gibi görünüyor, sorgu penceresini kapattıktan sonra yol değişkeni kendini varsayılana geri döndürüyor.

Nasıl kalıcı hale getirebilirim?


Sanırım arama_yolunu a, b, c'ye AYARLA; yanıtın belirttiği gibi ŞEMA YOLU AYARLAMA a, b, c;
Armando

Yanıtlar:


169

(Ve sunucuya yönetici erişiminiz yoksa)

ALTER ROLE <your_login_role> SET search_path TO a,b,c;

Bilmeniz gereken iki önemli nokta:

  1. Bir şema adı basit olmadığında, çift tırnak içine alınması gerekir.
  2. a, b, cŞemaların tablolar için aranacağı sıra olduğundan, varsayılan şemaları belirlediğiniz sıra önemlidir. Dolayısıyla, varsayılanlar arasında birden fazla şemada aynı tablo adına sahipseniz, belirsizlik olmayacak, sunucu her zaman sizin için belirttiğiniz ilk şemadaki tabloyu kullanacaktır search_path.

19
Ayrıca, a, b, c numaralandırması çevresinde tırnak işaretleri KULLANMAYIN. Son 15 dakika boyunca el-alnına ...
Jmoney38

4
@ Jmoney38 Tek tırnak kullanılmamalıdır, ancak basit olmayan şema adları için çift tırnak gerekir.
vitaly-t

136

Varsayılanı search_pathveritabanı düzeyinde ayarlayabilirsiniz :

ALTER DATABASE <database_name> SET search_path TO schema1,schema2;

Veya kullanıcı veya rol düzeyinde:

ALTER ROLE <role_name> SET search_path TO schema1,schema2;

Veya tüm veritabanlarınızda ortak bir varsayılan şema varsa, search_path seçeneğiyle yapılandırma dosyasında sistem genelinde varsayılanı ayarlayabilirsiniz .

Bir veritabanı oluşturulduğunda, varsayılan olarak template1 adlı gizli bir "şablon" veritabanından oluşturulur , bu veritabanını gelecekte oluşturulacak tüm veritabanları için yeni bir varsayılan arama yolu belirtecek şekilde değiştirebilirsiniz. Ayrıca başka bir şablon veritabanı CREATE DATABASE <database_name> TEMPLATE <template_name>oluşturabilir ve veritabanlarınızı oluşturmak için kullanabilirsiniz .


9
psql komut satırından merak edenler için şemaları \ dn
BKSpurgeon

3
Ayarların etkili olması için oturumun bağlantısını kesmeniz ve tekrar bağlanmanız gerekir.
isapir

oh seni korusun. SQL Server'dan PG'ye geldi, bu yüzden bu benim için tamamen yeni (ve garip)
Nate Anderson

24

Josh haklı ama bir varyasyonu atladı:

ALTER ROLE <role_name> IN DATABASE <db_name> SET search_path TO schema1,schema2;

Belirli bir veritabanında kullanıcı için arama yolunu ayarlayın.


çok da kullanışlı. Teşekkürler
Alejandro Teixeira Muñoz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.