Akcia ON DB_CHANGE


Deklarácia
ON DB_CHANGE tableIdent GOTO [procName [PRTY prtyIdent]|   NONE]

Parametre
tableIdent in Identifikátor objektu typu Tabuľka.
procName in Meno RPC procedúry v ESL skripte.
prtyIdent in Nepovinný parameter typu Int. Priorita pri volaní RPC.

Popis
Akcia špecifikuje procedúru (prostredníctvom mena procName), ktorá bude zavolaná, ak nastane zmena obsahu danej databázovej tabuľky. Túto zmenu identifikuje príslušný proces D2000 DbManager ako jediný interpret databázových operácií v rámci systému D2000. Ak identifikuje zmenu, automaticky generuje príkaz na zavolanie registrovanej RPC procedúry.

Kľúčové slovo PRTY umožňuje zadanie priority vykonania registrovanej RPC procedúry. Táto vlastnosť zabezpečí prioritné vykonanie registrovanej RPC Procedúry. Priorita je zadaná parametrom prtyIdent za kľúčovým slovom PRTY.

Akcia ON DB_CHANGE tableIdent GOTO NONE zruší volanie procedúry pri zmene tabuľky. Jedna tabuľka môže mať v kontexte inštancie ESL skriptu maximálne jednu procedúru pre obsluhu jej zmeny. Preto opakovaná registrácia obsluhy pre jednu tabuľku bude mať za následok ESL run-time chybu a dôjde k prerušeniu vykonávania skriptu.

Procedúra procName musí mať nasledovnú deklaráciu:

 RPC PROCEDURE ProcName (IN INT _dbTable, IN INT _actionId)
 END ProcName 

Namiesto RPC môže byť použité RPCX.

Hodnota formálneho parametra _actionId je jedna z nasledovných možností:

_actionId 0 Úspešné zahájenie sledovania tabuľky.
_actionId 1 Sledovanie tabuľky sa nepodarilo inicializovať - nebeží proces D2000 DbManager alebo identifikátor tableIdent nie je identifikátorom objektu typu Tabuľka alebo došlo k neočakávanému prerušeniu sledovania tabuľky - napríklad pád procesu D2000 DbManager.
_actionId 10 D2000 DbManager vykonáva akciu DB_REFRESH_TABLE alebo bola uložená definícia štruktúry, ktorá je nakonfigurovaná na objekte typu Tabuľka.
_actionId 11 D2000 DbManager dokončil operáciu DB_*, DBS_* PG_* alebo bola vykonaná operácia nad tabuľkou z procesu D2000 HI prostredníctvom užívateľského rozhrania.
Ak sú modifikácie vykonávané v rámci databázovej transakcie (DB_TRANS_OPEN ...), oznam o zmene tabuľky proces D2000 DbManager generuje pri operácii potvrdenia zmien (DB_TRANS_COMMIT).
_actionId 12 Tabuľka sa vymazala z konfigurácie aplikácie.
_actionId 13 Došlo k prepnutiu aktívnej inštancie procesu D2000 DbManager alebo v redundancii D2000 Server, ku ktorému je proces D2000 DbManager pripojený, prešiel zo stavu HOT do stavu SBS. Je nutné, aby bola následne znovu volaná akcia ON DB_CHANGE na registráciu u nového aktívneho procesu D2000 DbManager.
Poznámka: Pri prepnutí aktívnej inštancie alebo pri prepnutí redundancie D2000 (keď sa D2000 DbManager stane pasívnym), sú zatvorené všetky transakcie, ukončené všetky databázové operácie a všetky handle sú zneplatnené. Preto je nutné následne zopakovať na novej aktívnej inštancii všetky inicializačné časti skriptov (otváranie databáz, tabuliek atď.).


Súvisiace stránky:

Napíšte komentár