Tôi đang đọc PostgreSQL của Oreilly : Lên và chạy , và trong phần Sắp xếp cơ sở dữ liệu của bạn bằng cách sử dụng lược đồ, nó search_path
có thể được đặt ở cấp cơ sở dữ liệu:
Ví dụ: nếu chúng tôi muốn tất cả các đối tượng trong contrib có thể truy cập được mà không cần chứng nhận lược đồ, chúng tôi sẽ thay đổi cơ sở dữ liệu của mình như sau:
ALTER DATABASE mydb SET search_path="$user",public,contrib;
Tuy nhiên, sau khi gõ lệnh ở trên, tôi vẫn không thể tham khảo các bảng trong lược đồ khác public
mà không đủ điều kiện:
ALTER DATABASE auth SET search_path="$user",public,staging;`
\d users
Cung cấp:
Did not find any relation named "users".
Nhưng nếu tôi sử dụng \d staging.users
, nó hoạt động.
SHOW search_path;
Cung cấp:
search_path
----------------
"$user",public
Có mặc định search_path
từ postgresql.conf
ghi đè giá trị mỗi cơ sở dữ liệu được đặt với ALTER DATABASE ... SET search_path
? Nếu đó là trường hợp, việc sử dụng giá trị trên mỗi cơ sở dữ liệu là gì?
select * from users
nhưng tôi có thể select * from staging.users
.
search_path
chưa? Bạn đã thử chỉ thiết lập search_path
cho kết nối của bạn?
ANSI
chế độ SQL). (Nhận xét ở đây vì bạn sẽ không thấy nó ở đó. Tôi sẽ xóa nó bình luận sau)
select * from users
?