Budu hádat, že se snažíte zeptat:
Pokud ano, jedinou vestavěnou možností je použití oprávnění. Viz GRANT
a REVOKE
v příručce PostgreSQL.
Pokud chcete něco složitějšího, můžete napsat ProcessUtility_hook
, ale to vyžaduje, abyste napsali rozšíření v C, které je zkompilováno a načteno na server.
Zápis ProcessUtility_hook
není ve skutečnosti příliš těžké, ale mezi definicemi PostgreSQL 9.2 a 9.3 jsou rozdíly, které znamenají, že budete potřebovat samostatná rozšíření. Zde je základní příklad:https://github.com/ringerc/scrapcode/ tree/master/postgresql/example_processutility_hook
a zde je háček ProcessUtility, který skutečně dělá něco užitečného:https://github.com/ringerc/postgres/blob/bdr-reject-unsafe-commands/contrib/bdr/bdr_commandfilter.c
Pokud nemáte zkušenosti s programováním v jazyce C a nemáte nějaký čas, ProcessUtility_hook
není pro vás.
Viz také:Jak zabránit vypuštění tabulky?