Domyślam się, że próbujesz zapytać:
Jeśli tak, jedyną wbudowaną opcją jest użycie uprawnień. Zobacz GRANT i REVOKE w podręczniku PostgreSQL.
Jeśli chcesz czegoś bardziej złożonego, możesz napisać ProcessUtility_hook , ale wymaga to napisania rozszerzenia w C, które jest skompilowane i załadowane na serwer.
Pisanie ProcessUtility_hook nie jest zbyt trudne, ale istnieją różnice między definicjami PostgreSQL 9.2 i 9.3, co oznacza, że będziesz potrzebować oddzielnych rozszerzeń. Oto prosty przykład:https://github.com/ringerc/scrapcode/ drzewo/master/postgresql/example_processutility_hook
a oto hak ProcessUtility, który faktycznie robi coś użytecznego:https://github.com/ringerc/postgres/blob/bdr-reject-unsafe-commands/contrib/bdr/bdr_commandfilter.c
Jeśli nie masz doświadczenia w programowaniu C i trochę czasu, ProcessUtility_hook nie jest dla ciebie.
Zobacz też:Jak zapobiec upuszczaniu tabeli?