602SQL-Úplná dokumentace Index  

Generický systémový trigger _on_system_event

Generický systémový trigger umožňuje provozovateli SQL serveru naprogramovat reakci na události, ke kterým dochází v souvislosti s provozem serveru. Jsou to události, týkající se serveru jako celku, například zálohování databáze, nikoliv specifické události v databázových aplikacích.

Generický systémový trigger je funkce:

FUNCTION _ON_SYSTEM_EVENT(IN event_num INT, IN ipar INT, IN spar CHAR(255)) RETURNS INT;
BEGIN
  ...
END
patřící do schématu _sysext.

Tuto funkci volá SQL server při výskytu určitých událostí. Parametr event_num určuje, o jakou událost jde. Význam ostatních parametrů a význam vrácené hodnoty funkce závisí na události.

Tento trigger se provádí s právy skupiny Config_admin (tj provozní správci).

Pro některé události lze vrácením vhodné hodnoty ovlivnit další činnost SQL serveru.

Událost 1 "Zálohování databázového souboru"

K této události dochází bezprostředně předtím, než server přistoupí k vytvoření záložní kopie svého databázového souboru. Parametr event_num má hodnotu 1. Parametr ipar je 0 při automatickém periodickém zálohování nebo je 1 při zálohování vyvolaném klientem přes API serveru (také tlačítkem Zálohovat teď). Hodnota parametru spar není definována.

Pokud funkce vrátí hodnotu -1, pak je zálohování zrušeno. Pro ostatní hodnoty se zálohování provede.

Příklad:

Nechť existuje uživatelská funkce Muze_zacit_zaloha_test(), která rozhoduje, je-li možné zálohovat. Pak lze pomocí této funkce povolit či nepovolit provedení zálohy:

FUNCTION _on_system_event(IN event_num INT, IN ipar INT, IN spar CHAR(255)) RETURNS INT;
BEGIN
  CASE
    WHEN event_num = 1 THEN // je to záloha
     IF Muze_zacit_zaloha_test() THEN
       CALL Log_write('začíná zálohování: par='+Int2str(ipar));
       RETURN 1;
     ELSE
       RETURN -1;
     END IF;
  ELSE
    RETURN 1; // impl. stav pro ostatní eventy
  END CASE;
END