Prácu s databázou pre všetky akcie v prostredí D2000 (skript ESL, prostredie procesu D2000 HI) implementuje proces D2000 DBManager. Vykonávanie jednotlivých akcií (SQL príkazov) prebieha vždy v rámci nejakého fyzického spojenia (Connection) na databázu. Platí, že na jednu databázu môže byť súčasne vytvorených viacero spojení.
Existencia spojenia (Connection) má význam pri riadení transakčného prístupu k databáze. Podľa spôsobu, ako je spojenie nastavené, sú jednotlivé akcie (SQL príkazy) vykonávané:
- okamžite po ich zadaní - režim Auto Commit,
- až po vykonaní príkazu COMMIT, ktorý v podstate ukončuje transakciu a všetky zmeny vyvolané predošlými akciami aplikuje na databázu. Pred vykonaním príkazu COMMIT sú všetky zmeny považované za dočasné.
Transakčný režim je v mnohých prípadoch pre prácu s databázou nevyhnutný a je ho možné riadiť prostriedkami ESL.
ESL definuje skupiny príkazov pre prístup k tabuľkám. Každá skupina sa vyznačuje (a je ohraničená) existenciou logickej akcie CONNECT a DISCONNECT (napríklad DB_CONNECT a DB_DISCONNECT). Tieto akcie vytvárajú prístup k tabuľke v databáze vždy prostredníctvom existujúceho Spojenia. Ak pri vykonávaní akcie CONNECT nie je Spojenie určené, proces D2000 DBManager použije tzv. Automatické spojenie (Default Connection). Toto pracuje v režime Auto Commit a je zdieľané (iný CONNECT bez určenia Spojenia znova využije existujúce Automatické spojenie). O jeho vznik sa samostatne postará proces D2000 DBManager.
Pre prácu so Spojením (Connection) sú určené nasledovné akcie:
Akcia | Popis |
---|---|
DB_TRANS_OPEN | Vytvorenie nového Spojenia |
DB_TRANS_COMMIT | Vykonanie akcie COMMIT |
DB_TRANS_ROLLBACK | Vykonanie akcie ROLLBACK |
DB_TRANS_CLOSE | Vykonanie akcie ROLLBACK + ukončenie Spojenia |
Všetky prístupy k tabuľke v prostredí D2000 ak nie je povedané ináč štandardne pristupujú k databáze
prostredníctvom Automatického spojenia.
Túto skutočnosť znázorňuje nasledovný obrázok, kde
- proces HI využíva Automatické spojenie napríklad pri práci s tabuľkami.
- Script 1 sa pripája na tabuľku akciou DB_CONNECT bez určenia Spojenia, preto všetky následné akcie DB_* budú vykonávané v rámci Automatického spojenia.
- Script 2 vytvoril nové Spojenie. V rámci Spojenia vykonal akciu DB_CONNECT. Po vykonaní potrebných zmien v databáze tieto potvrdil akciou DB_TRANS_COMMIT a následne spojenie ukončí akciou DB_TRANS_CLOSE.
- Script 3 používa pre prístup k databáze akcie SQL_*. V tomto prípade je databáza určená prostredníctvom tzv. connection stringu a preto proces D2000 DBManager vytvára nové Spojenie. Ak sa v connection stringu nachádza kľúčové slovo ACD (Auto Commit Disable), Spojenie je v transakčnom režime a je nutné používať SQL príkaz COMMIT.
Pridať komentár