ANEXA TRIGGERE

TRATAREA ERORILOR IN TRIGGERE

Ce se intampla atunci cand executia unui trigger esueaza?

Atunci cand executia unui trigger esueaza, SQL Forms trece la tratarea erorii, in functie de tipul triggerului. In lista de mai jos se afla modurile de tratare a erorilor in functie de tipul triggerului. Pentru o descriere mai dataliata, consultati "SQL Forms Designers Reverence Version 3.0".

Tipul triggerului               Modul de tratare a erorii
-------------------------------------------------------------------------
triggere cheie                  eroarea este ignorata
On-Clear-Block                  eroarea este ignorata
On-Database-Record              eroarea este ignorata
On-Error                        eroarea este ignorata
On-Message                      eroarea este ignorata
On-Remove-Record                eroarea este ignorata

On-Delete                       schimbarile in baza de date sunt anulate
On-Update                       schimbarile in baza de date sunt anulate
On-Insert                       schimbarile in baza de date sunt anulate
Pre-Delete                      schimbarile in baza de date sunt anulate
Post-Delete                     schimbarile in baza de date sunt anulate
Pre-Insert                      schimbarile in baza de date sunt anulate
Post-Insert                     schimbarile in baza de date sunt anulate
Pre-Update                      schimbarile in baza de date sunt anulate
Post-Update                     schimbarile in baza de date sunt anulate
Pre-Commit                      schimbarile in baza de date sunt anulate
Post-Commit                     schimbarile in baza de date sunt anulate

On-Lock                         blocarea nu are loc

On-New-Record                   crearea unei noi inregistrari esueaza; daca
                                evenimentul curent este Intra In Bloc, SQL
                                Forms incearca sa mute cursorul la locatia
                                initiala.

On-Validate-Field               validarea esueaza; SQL Forms seteaza eroarea
On-Validate-Record              validarea esueaza; SQL Forms seteaza eroarea

Pre-Form        -
Post-Form       |
Pre-Block       |----           SQL Forms incearca sa mute cursorul la
Post-Block      |               pozitia sa initiala
Pre-Record      |
Post-Record     |
Pre-Field       |
Post-Field      -

definit de utilizator           depinde de codul procesat de triggerul
                                definit de utilizator in momentul in care
                                esueaza

TIPURI DE TRIGGERE

TRIGGERE EVENIMENT


Scop: Camp, bloc sau forma

Numele triggerului              Note/Utilizari obisnuite
---------------------------------------------------------------------------
On-Clear-Block          Utilizat pentru actiuni ce se executa automat de
                        fiecare data cand SQL Forms curata blocul curent
                        in timpul unor evenimente cum ar fi CLEAR_BLOCK.
On-Database-Record      Folosit pentru a efectua o actiune de indata ce o
                        inregistrare este marcata pentru insertie sau
                        actualizare.
On-Error                Pentru a efectua revenirea din eroare. Se poate
                        inlocui mesajul de eroare original cu un mesaj
                        al utilizatorului.
On-New-Record           Pentru generarea de valori implicite dinamice,
                        pentru a umple campurile unei inregistrari noi.
On-Remove-Record        Utilizata pentru a efectua o actiune de indata ce o
                        inregistrare este marcata pentru stergere.
On-Message              Pentru a intercepta si raspunde la mesaje de
                        informare. Inlocuieste mesajele implicite cu mesaje
                        ale utilizatorului.
On-New-Field-Instance   Pentru a efectua o actiune ori de cate ori
                        operatorul introduce un camp.
On-Validate-Field       Valideaza valori introduse de utilizator.
Post-Change             NU SE UTILIZEAZA PENTRU VALIDARE. Se foloseste
                        pentru a umple campuri asociate.
Pre-Field               Pentru a deriva valori complexe implicite.
Post-Field              Utilizat pentru a calcula/modifica valori ale
                        campurilor, stergere de variaile globale.

Scop: Bloc sau Forma


Nume                    Note/ Utilizari frecvente
-------------------------------------------------------------------
On-Delete*      inlocuieste prelucrarea implicita SQL Forms pentru fiecare
                inregistrare marcata pentru stergere. Poate fi folosita pentru
                a marca o inregistrare pentru stergere, permitand scoaterea
                ei din baza de date la un moment ulterior.
On-Insert*      Inlocuieste procesarea SQL Forms implicita pentru fiecare
                inregistrare noua, care in mod normal ar fi trebuit introdusa
                in baza de date.
On-Update*      Inlocuieste prelucrarea SQL Forms implicita pentru fiecare
                inregistrare marcata pentru stergere.

*) aceste triggere pot fi utilizate in combinatie pentru a actualiza tabele
'audit'.

On-Lock         utilizat pentru a inlocui mecanismul implicit de blocare al
                SQL Forms, pentru a preveni efectuarea de actualizari/stergeri
                sau pentru a dezactiva complet acest mecanism.
On-Validate-    Se activeaza cand SQL Forms valideaza o inregistrare noua.
Record          Utilizata la testarea valorilor in mai multe campuri ale
                unei inregistrari, deoarece toate valorile sunt prezente in
                aceasta faza, ca urmare se pot efectua comparatii.
Pre-Insert      Se activeaza in timpul evenimentelor post, la fiecare
Pre-Update      introducere/actualizare/stergere a unui rand, INAINTE ca
Pre-Delete      transformarile sa se reflecte in tabela. Pot fi utilizate ca
                un ultim test inainte de a schimba valorile din tabela.
Post-Insert     Se activeaza in timpul evenimentelor post, la fiecare
Post-Update     introducere/actualizare/stergere a unui rand, DUPA ce
Post-Delete     transformarile sa reflecte in tabela.

Pre-Block       Poate fi utilizat pentru a permite accesul la un bloc,
                pentru extragera valorilor implicite din campurile blocului,
                sau pentru a initializa variabile globale.
Post-Block      Utilizat pentru 'post-block housekeeping'.
Pre-Record      poate folosi la gestionarea 'Running totals', initializarea
                variabilelor globale.
Post-Record     Folosit pentru a sterge variabile globale.
Pre-Commit      Se activeaza la fiecate 'tranzactie', daca urmeaza sa aiba
                loc transformari. Folosita pentru a introduce conditii de
                blocare, pentru a valida conditii sau pentru a face
                schimbarile pe campurile de pe ecran.
Post-Commit     Se activeaza la fiecate 'tranzactie', chiar daca au sau nu
                loc schimbari. Poate fi folosit pentru a actualiza tabele
                'audit'.

Scop: Forme

Pre-Form
Poate restrictiona accesul la forma (doar anumiti utilizatori, la anumite ore din zi etc.). Ca toate triggerele eveniment, NU POATE FOLOSI PROCEDURI IMPACHETATE PROTEJATE. Daca este o cerere (se cere sa se execute o intrare intr-o forma), trebuie folosit KEY_STARTUP.

Post-Form
Gestioneaza spre exemplu stergerea variabilelor globale inainte de a intra in urmatoarea forma a aplicatiei.

Triggere cheie

Toate triggerele cheie (cu exceptia Key_Startup sau Key_Others) se activeaza cand functia corespunzatoare este activata. Ele pot contine proceduri PL/SQL sau proceduri impachetate ale formei.

Ele respecta aceleasi reguli ca si triggerele eveniment.

Nume            Note/Utilizari frecvente
--------------------------------------------------------
Key-Startup     Actiuni de initializare la intrarea intr-o forma. Poate
                folosi proceduri impachetate protejate. Este in general
                preferat lui Pre-Form din aceasta cauza, dar nu are o
                restrictionare buna a accesului.
Key-Others      Asociat cu toate cheile care pot avea un trigger cheie
                asociat, dar inca nedefinit. Se poate folosi pentru a asigna
                o functie standard pentru toate tastele functionale care nu
                au definita o actiune.
Key_Fn Triggers Aceste triggere se pot atasa celor 10 taste sau combinatii
                de taste care au fost specificate folosind ORACLE TERMINAL,
                pentru a se comporta ca taste functionale Forms.