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?