sql >> Databáze >  >> RDS >> PostgreSQL

Zabraňte pádu stolu, pokud nejsou splněny podmínky

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?




  1. Klíčová slova IS vs AS pro vytváření funkcí nebo procedur Oracle PL/SQL

  2. Store Procedure nevrací hodnotu v MVC5

  3. Nelze použít objekt typu PDOStatement jako pole

  4. 11 Běžné příkazy SQL se základními příklady