Imagino que você esteja tentando perguntar:
Nesse caso, sua única opção integrada é usar permissões. Consulte
GRANT
e REVOKE
no manual do PostgreSQL. Se você quiser algo mais complexo, você pode escrever um
ProcessUtility_hook
, mas isso requer que você escreva uma extensão em C que seja compilada e carregada no servidor. Escrevendo um
ProcessUtility_hook
não é muito difícil, mas existem diferenças entre as definições do PostgreSQL 9.2 e 9.3 que significam que você precisará de extensões separadas. Aqui está um exemplo básico:https://github.com/ringerc/scrapcode/ tree/master/postgresql/example_processutility_hook
e aqui está um gancho do ProcessUtility que realmente faz algo útil:https://github.com/ringerc/postgres/blob/bdr-reject-unsafe-commands/contrib/bdr/bdr_commandfilter.c
Se você não tem experiência em programação C e há algum tempo, um
ProcessUtility_hook
não é para você. Veja também:Como evitar que a tabela seja descartada?