ullman200 (2)

ullman200 (2)



406 6. WlljZY I WYZWALACZE W JEŻYKU SOL

ograniczany. Na przykład warunki więzów CHECK są sprawdzane zawsze, gdy zmiana dotyczy krotki zawierającej wartość ograniczanego atry butu (nawet gdy operacja polega na dołączaniu nowej krotki).

Ponieważ implementacja więzów polega na „wyzwoleniu” sprawdzenia warunków na skutek zajścia określonych zdarzeń, więc nasuwa się pytanie, czy to nie programista, zamiast systemu, powinien określać zdarzenie wyzwalane przy sprawdzeniu warunku. Przy takim podejściu użytkownik miałby szersze możliwości wyboru operacji wykonywanych w bazie danych i mógłby je określać nic tylko w celu ochrony przed naruszeniem ograniczeń. Dlatego w standardzie SQL3 umieszczono również „wyzwalacze”, które są pochodną więzów, ale umożliwiają określenie zarówno konkretnych zdarzeń kontekstowych dla warunku więzów, jak i operacji, które mają być przetworzone w określonych sytuacjach. Może wydać się interesujące, że systemy oferowane obecnie na rynku są, w zakresie elementów aktywnych, bliższe standardowi SQL3 niż $QL2. Prawdopodobnie dzieje się tak dlatego, że komercyjnym producentom jest w pewnym sensie łatwiej implementować wyzwalacze niż asercje.

6.6.1. Wyzwalacze a więzy

Wyzwalacze, czasami nazywane regułami zdarzeńie-warunek-akcja (ECA rules, czyli event-condition-action\ różnią się od omawianych poprzednio więzów na trzy sposoby:

1.    Wyzwalacze są testowane tylko przy zajściu określonego przez programistę zdarzenia. Typy takich zdarzeń obejmują zazwyczaj dołączanie, modyfikacje lub usuwanie krotek danej relacji. W niektórych implementacjach SQL występuje również inny rodzaj zdarzeń; zakończenie transakcji (w podrozdziale 7.2 omówiono atomowe jednostki przetwarzania, nazywane transakcjami, używane jako niepodzielne operacje w bazie danych).

2.    Wyzwalacze testują warunek w chwili zajścia zdarzenia, a nie uprzedzając je. Jeśli warunek nie jest spełniony, to w odpowiedzi na zdarzenie nic się nie wykona.

3.    Jeśli warunek wyzwalacza zostanie spełniony, to DBMS przetwarza akcją związaną z wyzwałaczem. Akcja może chronić przed zajściem zdarzenia w bazie lub może zmienić wynik zdarzenia (np. usunąć wprowadzoną krotkę). Akcja może polegać na przetworzeniu całego ciągu operacji w bazie danych, nawet takich, które nie mają żadnego związku z wyzwalanym zdarzeniem.

W dalszym ciągu najpierw omówimy wyzwalacze z SQL3. Potem krótko opiszemy rozszerzenia w SQL3 więzów z SQL2, nazywanych asercjami. Właśnie tego typu więzy mają pewne cechy wyzwalaczy.

6.6.2. Wyzwalacze w języku SQL3

Instrukcja wyzwalacza w SQL3 udostępnia użytkownikowi wiele op< w zakresie każdego elementu: zdarzenia, warunku i akcji. Podstawowe wl ściwości są następujące:

1.    Akcja może być wykonana przed, po i w chwili zajścia zdarzenia.

2.    Akcja może korzystać zarówno z wartości sprzed zajścia zdarzeń jak i z nowych wartości powstałych w wyniku wstawienia, mody fik cji lub usunięcia krotki w trakcie zdarzenia.

3.    Zdarzenia mogą wprowadzać modyfikacje do określonej kolumny 1 do zbioru kolumn.

4.    Warunek można określać w klauzuli when i akcja jest wykonywa przy' wyzwoleniu reguły oraz warunek jest spełniony, gdy zajdzie w zwalane zdarzenie.

5.    Programista może sam określić, czy akcja ma być wykonana:

a)    zawsze dla każdej modyfikowanej krotki,

b)    raz dla wszystkich modyfikowanych krotek w pojedynczej opera w bazie danych.

Zanim przedstawimy szczegółowy opis syntaktyki wyzwalaczy, rozv żymy przykład ilustrujący najważniejsze właściwości wyzwalaczy żarów składniowe, jak i semantyczne. W tym przykładzie wyzwalacz wykonuje osobno dla każdej modyfikowanej krotki.

PRZYKŁAD 6.16

Napiszemy wyzwalacz w SQL3, który będzie stosowany dla relacji:

FilmDyr(nazwisko, adres, cert#, cenaSieci)

Akcja jest wyzwalana przy próbie modyfikacji atrybutu cenaSieci. W v niku powinna zostać uniemożliwiona każda próba obniżenia ceny sieci pre sa studia. Deklarację wyzwalacza pokazano na rys. 6.7.

W wierszu 1) zapisano deklarację złożoną ze słowa kluczowego CRF.7 TRIGGER oraz nazwy wyzwalacza. W drugim wierszu określa się wyzwrak zdarzenie, którym jest modyfikacja wartości atrybutu cenaSieci w rek FilmDyr. W wierszach od 3) do 5) zapisano elementy warunków' i akcji \ zwalacza, które obejmują zarówno stare wartości krotki (krotka przed mo fikacją), jak i nową krotkę ze zmodyfikowanymi wartościami. Tc krotki identyfikowane poprzez nazwy StaraKror.ka i NowaKrorka, odpowied do deklaracji w wierszach 4) i 5). Można tych nazw używać w warunk i akcjach tak samo jak nazw zmiennych dla krotek, występujących w z\ czajnej klauzuli EROM języka SQL.


Wyszukiwarka

Podobne podstrony:
ullman197 (2) 4UU 6 WIĘZY I WYZWALACZE W JĘZYKU SOL  GwiazdyW(tytułFilmu, rokFilmu,
55786 ullman196 (2) 398 6. WIĘZY l WYZWALACZE W JĘZYKU SOL Mimo że ascrcja obejmuje dwie relacje, to
33962 ullman168 (2) 5. JŁ/.YK. BA7. DANYCH SOL myParamount i na nich operuje zapytanie. Dlatego wyko
ullman195 (2) 396 6. WIĘZY l WYZWALACZE W JEŻYKU SQl. nyrni”. Podczas gdy pozostałe typy więzów są t
ullman201 (2) 408 6. WIĘZY I WYZWALACZE W JĘZYKU SQL 1 1)    CREATE TRIGGER Cena
ullman204 (2) 414 6. WIĘZY 1 WYZWALACZE W JĘZYKU SQL ♦    Więzy kratkowe typu CIIEC.K
65226 ullman199 (2) 404 6. WIĘZY r wyzwalacze w języku soi. 404 6. WIĘZY r wyzwalacze w języku soi.
50337 ullman111 (2) 4 DZIAŁANIA W MODELU RELACYJNYM łach zapisuje się na przykład, że jeśli w pewnej
Obraz1 (155) lecz tym razem, na przykład stany 2s i 2p są rozdzielone, podczas gdy W atomie wodoru

więcej podobnych podstron