Các giá trị mặc định được phân tích cú pháp tại thời điểm tạo (liên kết sớm!). Những gì bạn thấy trong psql, pgAdmin hoặc các ứng dụng khách khác là biểu diễn văn bản nhưng trên thực tế, là OID
của hàm now()
tại thời điểm tạo, cột mặc định được lưu trữ trong danh mục hệ thống pg_attrdef
. Tôi trích dẫn:
adbin pg_node_tree The internal representation of the column default value
adsrc text A human-readable representation of the default value
Khi bạn thay đổi search_path
, điều đó khiến Postgres hiển thị tên của lược đồ hàm đủ điều kiện, vì nó sẽ không được giải quyết chính xác nữa với search_path
hiện tại .
Kết xuất và khôi phục không liên quan đến search_path
tùy chỉnh của bạn cài đặt. Họ thiết lập nó một cách rõ ràng. Vì vậy, những gì bạn thấy không liên quan đến chu kỳ kết xuất / khôi phục.
Ghi đè các chức năng tích hợp sẵn
Đặt public
trước pg_catalog
trong search_path
là một trò chơi mạo hiểm . Người dùng kém quyền (bao gồm cả bạn) thường được phép viết ở đó và tạo các hàm có thể vô tình ghi đè các chức năng của hệ thống - với kết quả tùy ý (hoặc độc hại).
Bạn muốn có một lược đồ chuyên dụng với quyền truy cập hạn chế để ghi đè các chức năng tích hợp sẵn. Sử dụng một cái gì đó như thế này để thay thế:
SET search_path = override, pg_catalog, public;
Chi tiết trong câu trả lời liên quan trên dba.SE .