Zajištění referenční integrity dat ve vlastních databázích

 

Modul nebo doplněk rozšiřující Vario (dále jen doplněk) může používat vlastní databáze. V databázi doplňku mohou být uloženy klíče nějakého záznamu Varia (např. Firma, Produkt), u kterých je potřeba zajistit referenční integritu. Například odstranění souvisejících záznamů z databáze doplňku při odstranění kontaktu z adresáře nebo aktualizaci klíče Firma při přejmenování firmy.

Vario nyní umožňuje definovat systémové akce, které tuto integritu zajistí. Akce se ukládají do možností Varia. Předpokládá se, že tvůrce doplňku bude tyto akce distribuovat pomocí manifestu.

 

Pro vytvoření vazby je někdy lepší použít pole RowGUID, které obsahuje identifikátor typu GUID. Hodnotu tohoto pole uživatel nemůže změnit. Řešení integrity se potom omezí pouze na případ odstranění záznamu.

 

Do tabulky Firmy. Moznosti_varia_profil se uvedou akce pro zajištění integrity dat následovně:
Do pole Klíč se uvede: VARIO\<Modul>\<Agenda>\\<Typ události>, kde
<Modul> je název modulu,
<Agenda> je název agendy, u níž se sledují změny a
<Typ události> je { "PoPridaniZaznamu" | "PoAktualizaciKlice" | "PredOdstranenimZaznamu" | "PoOdstraneniZaznamu" }.
Do pole Nazev_hodnoty se uvede: <Agenda nebo Doplněk>\<Popis>
<Agenda nebo Doplněk> - Název agendy nebo doplňku, u jejichž dat se má udržovat integrita.
<Popis> - Krátký popis, co se má stát.
Pozor: primární klíč tabulky Moznosti_varia_profil je tvořen poli Klic a Nazev_hodnoty.

Do pole Hodnota se uvede jedna ze dvou možností:
1) Definice SQL dotazu v syntaxi "Vario". Pro události PoPridaniZaznamu, PredOdstranenimZaznamu a PoOdstraneniZaznamu může obsahovat nejvýše jeden parametr libovolného jména, který se doplní hodnotou primárního klíče přidávaného, resp. odstraňovaného záznamu. Např.:
Data####;Parameters par1 Text;delete from MojeTabulka where PK_Klic = [par1];PASSTHROUGH=*
Pro událost PoAktualizaciKlice může obsahovat nejvýše dva parametry libovolného jména, z nichž první se vyplní novou hodnotou klíče a druhý parametr původní hodnotou klíče. Např.:
Data####;Parameters parNovy Text, parStary Text; Update MojeTabulka set PK_Klic = [parNovy] where PK_Klic = [parStary];PASSTHROUGH=*

2) Skript pro VarioLib.Evaluator uvedený textem "EVAL:".
Například:
EVAL:Msgbox([ZaznamPuvodni] & " se změnil na " & [ZaznamNovy])
Evaluator je nainicializován tak, aby ve skriptu byla dostupná proměnná Vario, a předává se mu kolekce s prvky "ZaznamPuvodni" (původní hodnota klíče - události PoAktualizaciKlice, PredOdstranenimZaznamu a PoOdstraneniZaznamu) a "ZaznamNovy" (nová hodnota klíče - události PoPridaniZaznamu a PoAktualizaciKlice).

Díky těmto akcím můžete zajistit aktualizaci záznamů v databázích vašich doplňků. Aktualizace se řeší jednotným způsobem pro data na souborovém i SQL serveru.