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_pathcó 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 publicmà 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_pathtừ postgresql.confghi đè 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 usersnhưng tôi có thể select * from staging.users.
search_pathchưa? Bạn đã thử chỉ thiết lập search_pathcho kết nối của bạn?
ANSIchế độ 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?