PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Impedisci il drop table se le condizioni non sono soddisfatte

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?