Предполагам, че се опитвате да попитате:
Ако е така, единствената ви вградена опция е да използвате разрешения. Вижте GRANT
и REVOKE
в ръководството за PostgreSQL.
Ако искате нещо по-сложно, можете да напишете ProcessUtility_hook
, но това изисква да напишете разширение на C, което се компилира и зарежда в сървъра.
Писане на ProcessUtility_hook
всъщност не е твърде трудно, но има разлики между дефинициите на PostgreSQL 9.2 и 9.3, което означава, че ще ви трябват отделни разширения. Ето основен пример:https://github.com/ringerc/scrapcode/ дърво/главен/postgresql/example_processutility_hook
и ето кука на ProcessUtility, която всъщност прави нещо полезно:https://github.com/ringerc/postgres/blob/bdr-reject-unsafe-commands/contrib/bdr/bdr_commandfilter.c
Ако нямате опит в програмирането на C и известно време, ProcessUtility_hook
не е за вас.
Вижте също:Как да предотвратите изпускане на таблица?