Tôi đoán rằng bạn đang cố hỏi:
Nếu vậy, tùy chọn tích hợp duy nhất của bạn là sử dụng quyền. Xem GRANT
và REVOKE
trong sổ tay PostgreSQL.
Nếu bạn muốn thứ gì đó phức tạp hơn, bạn có thể viết ProcessUtility_hook
, nhưng điều này yêu cầu bạn viết một phần mở rộng bằng C được biên dịch và tải vào máy chủ.
Viết ProcessUtility_hook
không thực sự quá khó, nhưng có sự khác biệt giữa các định nghĩa PostgreSQL 9.2 và 9.3 có nghĩa là bạn sẽ cần các phần mở rộng riêng biệt. Đây là một ví dụ cơ bản: https://github.com/ringerc/scrapcode/ tree / master / postgresql / example_processutility_hook
và đây là một hook ProcessUtility thực sự hoạt động hữu ích: https://github.com/ringerc/postgres/blob/bdr-reject-unsafe-commands/contrib/bdr/bdr_commandfilter.c
Nếu bạn không có kinh nghiệm lập trình C và một chút thời gian, hãy ProcessUtility_hook
không dành cho bạn.
Xem thêm: Cách ngăn bảng bị rớt?