PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm thế nào để làm cho một tiện ích mở rộng không thể di dời?

Đầ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.)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách chèn dữ liệu CSV vào cơ sở dữ liệu PostgreSQL (cơ sở dữ liệu từ xa)

  2. Hướng dẫn phân vùng dữ liệu trong PostgreSQL

  3. Postgres và chỉ mục trên các khóa ngoại và khóa chính

  4. Psycopg2 không thích các tên bảng bắt đầu bằng chữ thường

  5. Chèn giá trị DEFAULT vào cột khi tham số là NULL