| Termin | Definicja |
|---|---|
| Wyzwalacz INSERT | Wyzwalacz INSERT uruchamia się w reakcji na dodanie nowych wierszy do tabeli. Jak zbudowany jest wyzwalacz na wstawianieWyzwalacz INSERT to fragment kodu przypisany do tabeli i wykonywany automatycznie przez silnik bazy danych w momencie dodania do niej wierszy. Nie wywołuje się go bezpośrednio, uruchamia go samo polecenie wstawienia. W Microsoft SQL Server ma dostęp do wirtualnej tabeli inserted, zawierającej komplet nowo dodanych wierszy, i to jest sedno działania: wyzwalacz uruchamia się raz na całą operację, a nie raz na każdy wiersz, więc kod musi obsługiwać zbiór, nie pojedynczy rekord. Wyróżnia się warianty wykonywane po operacji oraz zamiast niej, gdzie ten drugi typ pozwala przechwycić wstawienie na przykład do widoku i przekierować je do tabel bazowych. Po co administratorzy je zakładająTypowe zastosowania to prowadzenie dziennika zmian, czyli zapisywanie w osobnej tabeli kto i kiedy dodał dane, uzupełnianie pól wyliczanych, utrzymywanie tabel podsumowujących oraz pilnowanie reguł biznesowych, których nie da się wyrazić zwykłym ograniczeniem kolumny. W praktyce warto rozważyć alternatywy, zanim sięgnie się po wyzwalacz: prostą regułę lepiej wyrazić ograniczeniem CHECK albo kluczem obcym, wartość domyślną klauzulą DEFAULT, a historię zmian wbudowanym mechanizmem tabel czasowych. Wyzwalacz jest narzędziem mocnym, ale niewidocznym w kodzie aplikacji, co utrudnia późniejszą diagnozę. Pułapki, przez które psuje się wydajność i logikaNajkosztowniejszym błędem jest napisanie kodu zakładającego jeden wiersz, na przykład przypisanie wartości z tabeli inserted do zmiennej. Przy wstawieniu tysiąca rekordów jednym poleceniem wyzwalacz weźmie wartość przypadkowego wiersza i po cichu uszkodzi dane. Drugi problem to wyzwalacze łańcuchowe: jeden zapisuje do tabeli, która ma własny wyzwalacz, i tak dalej, aż do przekroczenia limitu zagnieżdżenia albo powstania rekurencji. Trzeci to transakcje, bo kod wyzwalacza działa wewnątrz transakcji operacji wstawiania, więc długie działanie blokuje tabelę wszystkim pozostałym, a zgłoszenie błędu wycofuje całą operację. Osobno warto pamiętać, że masowe ładowanie danych potrafi domyślnie pomijać wyzwalacze, przez co dziennik zmian nagle robi się niekompletny. Kiedy spowolnienie ma źródło w sprzęcie serweraObjawy typu nagłe wydłużenie zapisów bywają mylnie przypisywane bazie, a wynikają z awarii nośnika, przegrzewania się procesora lub błędów pamięci. Serwisujemy komputery i serwery firm w Warszawie: sprawdzamy stan dysków, wymieniamy je na nowe z przeniesieniem systemu, czyścimy i wymieniamy układy chłodzenia. Na czas naprawy możemy podstawić laptop zastępczy. |