|
![]() | 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 |