Đầu tiên, bạn phải thay đổi relocatable
thành false
trong tệp điều khiển của tiện ích.
Ngoài ra, đề xuất bạn nhận được có một phần hợp lý và một phần vô nghĩa.
Bạn nên xác định các chức năng của mình như sau:
CREATE FUNCTION .... AS
$$ /* function body */ $$
SET search_path = @[email protected];
Sau đó, search_path
được sửa thành pg_catalog
, pg_temp
và lược đồ mở rộng của bạn trong suốt thời gian gọi hàm. Điều đó có nghĩa là tất cả quyền truy cập vào các đối tượng không có lược đồ rõ ràng sẽ chỉ tìm kiếm trong các lược đồ này.
Sau đó, bạn không phải lo lắng về việc đủ điều kiện rõ ràng mọi thứ trong hàm với @[email protected]
và bạn có thể sử dụng các toán tử mà không phải lo lắng vì search_path
cũng áp dụng cho các nhà khai thác. (Bạn cũng có thể các toán tử đủ điều kiện theo lược đồ:OPERATOR(schema.+)
, nhưng điều đó rõ ràng là gây đau đớn và gây hại cho khả năng đọc.)