ON DB_CHANGE

ON DB_CHANGE

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:

Akcie v skriptoch