| Termin | Definicja |
|---|---|
| Wyzwalacz na widoku | Wyzwalacz na widoku wymaga klauzuli INSTEAD OF, ponieważ widoki nie zawsze można modyfikować bezpośrednio. Rola wyzwalacza przypisanego do widokuWyzwalacz na widoku to procedura uruchamiana automatycznie przez system zarządzania bazą danych w odpowiedzi na operację wykonywaną na widoku, najczęściej Wyzwalacz typu Dlaczego bezpośrednia modyfikacja widoku bywa niemożliwaProsty widok oparty na jednej tabeli, bez agregacji, grupowania, eliminowania duplikatów i złożonych obliczeń, może być w niektórych silnikach modyfikowalny bez dodatkowego wyzwalacza. Sytuacja zmienia się, gdy definicja widoku zawiera na przykład Przykładowo widok może łączyć tabelę klientów z tabelą adresów i przedstawiać w jednym wierszu identyfikator klienta, nazwę firmy oraz ulicę. Polecenie aktualizujące ulicę wymaga zmiany tabeli adresów, natomiast zmiana nazwy firmy wymaga zmiany tabeli klientów. Jeszcze trudniejsza jest operacja wstawienia nowego wiersza, ponieważ trzeba najpierw ustalić, czy dane mają trafić do jednej tabeli, czy do kilku tabel oraz jakie klucze obce należy utworzyć. Wyzwalacz Przebieg obsługi INSERT, UPDATE i DELETEPodczas wykonywania operacji na widoku silnik rozpoznaje zdarzenie i przekazuje sterowanie wyzwalaczowi. Kod wyzwalacza odczytuje wartości przekazane w ramach operacji, sprawdza ich poprawność i wykonuje odpowiednie polecenia na tabelach bazowych. W zależności od konkretnego systemu dane nowych, zmienionych lub usuwanych wierszy są udostępniane za pomocą specjalnych struktur, tabel logicznych albo innych mechanizmów opisanych w dokumentacji danego silnika. Nie należy zakładać, że składnia i sposób dostępu do tych danych są identyczne w różnych produktach. Wyzwalacz może obsługiwać wiele wierszy w jednym poleceniu, dlatego jego logika powinna być przygotowana na operacje zbiorowe, a nie wyłącznie na pojedynczy rekord. Kod działający poprawnie dla jednego wiersza może błędnie przetworzyć większy zestaw, jeżeli używa zmiennej skalarnej albo zakłada, że wynik zapytania zawsze zawiera dokładnie jedną wartość. W praktyce trzeba również uwzględnić transakcję: zapis do tabel bazowych powinien zakończyć się powodzeniem w całości albo zostać wycofany, jeżeli walidacja lub jedna z operacji zapisu zakończy się błędem. Wyzwalacz nie powinien bez potrzeby powtarzać kontroli, które już zapewniają ograniczenia tabel, takie jak klucz podstawowy, klucz obcy, Projektowanie i diagnozowanie wyzwalacza na widokuPrzed utworzeniem wyzwalacza trzeba ustalić, jakie operacje widok ma obsługiwać oraz czy każda kolumna ma jednoznaczne źródło w tabelach bazowych. Warto rozdzielić przypadki dla Diagnoza problemów powinna obejmować definicję widoku, kod wyzwalacza, ograniczenia tabel bazowych oraz rzeczywiste polecenie wysyłane przez aplikację. Błąd może wynikać nie z samego widoku, lecz z próby zapisania kolumny tylko do odczytu, naruszenia klucza obcego, nieobsłużenia operacji wielowierszowej albo rekurencyjnego wywołania logiki modyfikującej dane. Testy należy wykonywać na kopii danych, sprawdzając osobno odczyt widoku, pojedynczą zmianę, zmianę wielu wierszy, wycofanie transakcji i równoczesne wykonanie przez kilka sesji. Wyzwalacz na widoku jest więc warstwą translacji pomiędzy interfejsem zapisu a strukturą relacyjną bazy. Jego użycie ma sens wtedy, gdy widok zapewnia potrzebny, uproszczony model danych, a jawna procedura mapowania poprawia kontrolę nad modyfikacjami. Dokumentacja powinna wskazywać obsługiwane operacje, tabele zmieniane przez wyzwalacz, reguły walidacji oraz zależność od konkretnego silnika bazy danych. |