PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Empêcher la suppression de la table si les conditions ne sont pas remplies

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 ?