Immagino che tu stia cercando di chiedere:
In tal caso, l'unica opzione integrata è utilizzare le autorizzazioni. Vedi GRANT
e REVOKE
nel manuale di PostgreSQL.
Se vuoi qualcosa di più complesso, puoi scrivere un ProcessUtility_hook
, ma ciò richiede la scrittura di un'estensione in C che viene compilata e caricata nel server.
Scrivere un ProcessUtility_hook
in realtà non è troppo difficile, ma ci sono differenze tra le definizioni di PostgreSQL 9.2 e 9.3 che significano che avrai bisogno di estensioni separate. Ecco un esempio di base:https://github.com/ringerc/scrapcode/ tree/master/postgresql/example_processutility_hook
ed ecco un hook ProcessUtility che in realtà fa qualcosa di utile:https://github.com/ringerc/postgres/blob/bdr-reject-unsafe-commands/contrib/bdr/bdr_commandfilter.c
Se non hai esperienza di programmazione in C e un po' di tempo, un ProcessUtility_hook
non fa per te.
Vedi anche:Come evitare che la tabella venga eliminata?