|
|
| Systémové triggery | Systémové triggery |
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 ... ENDpatří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.
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
| Systémové triggery | Systémové triggery |