Je suppose que vous essayez de demander :
Si tel est le cas, votre seule option intégrée consiste à utiliser les autorisations. Voir GRANT
et REVOKE
dans le manuel PostgreSQL.
Si vous voulez quelque chose de plus complexe, vous pouvez écrire un ProcessUtility_hook
, mais cela nécessite que vous écriviez une extension en C qui soit compilée et chargée sur le serveur.
Écrire un ProcessUtility_hook
n'est en fait pas trop difficile, mais il existe des différences entre les définitions PostgreSQL 9.2 et 9.3 qui signifient que vous aurez besoin d'extensions distinctes. Voici un exemple basique :https://github.com/ringerc/scrapcode/ arbre/maître/postgresql/example_processutility_hook
et voici un hook ProcessUtility qui fait quelque chose d'utile :https://github.com/ringerc/postgres/blob/bdr-reject-unsafe-commands/contrib/bdr/bdr_commandfilter.c
Si vous n'avez pas d'expérience en programmation C et un peu de temps, un ProcessUtility_hook
n'est pas pour vous.
Voir aussi :Comment empêcher la suppression d'une table ?