Wyzwalacz to procedura składowana w bazie danych, która automatycznie wywołuje się za każdym razem, gdy wystąpi specjalne zdarzenie w bazie danych. Na przykład wyzwalacz można wywołać, gdy wiersz zostanie wstawiony do określonej tabeli lub gdy zostaną zaktualizowane określone kolumny tabeli. Krótko mówiąc, wyzwalacz to zbiór SQL instrukcje o określonych nazwach, które są przechowywane w pamięci systemowej. Należy do określonej klasy procedur składowanych, które są automatycznie wywoływane w odpowiedzi na zdarzenia serwera bazy danych. Do każdego wyzwalacza dołączona jest tabela.
Ponieważ wyzwalacza nie można wywołać bezpośrednio, w przeciwieństwie do procedury składowanej, nazywa się go procedurą specjalną. Wyzwalacz jest wywoływany automatycznie za każdym razem, gdy ma miejsce zdarzenie modyfikacji danych w tabeli, co stanowi główną różnicę między wyzwalaczem a procedurą. Z drugiej strony procedurę składowaną należy wywołać bezpośrednio.
Poniżej przedstawiono kluczowe różnice między wyzwalaczami a procedurami przechowywanymi:
orzeszki ziemne vs orzeszki ziemne
- Wyzwalaczy nie można wywołać ani wykonać ręcznie.
- Nie ma szans, że wyzwalacze otrzymają parametry.
- Transakcja nie może zostać zatwierdzona ani wycofana w ramach wyzwalacza.
Składnia:
utwórz wyzwalacz [nazwa_wyzwalacza]
[przed | Po]
wstawić
na [nazwa_tabeli]
[dla każdego wiersza]
[trigger_body]
Wyjaśnienie składni
- Utwórz wyzwalacz [nazwa_wyzwalacza]: Tworzy lub zastępuje istniejący wyzwalacz nazwą_wyzwalacza.
- [przed | after]: Określa, kiedy zostanie wykonany wyzwalacz.
- wstawka: Określa operację DML.
- On [nazwa_tabeli]: Określa nazwę tabeli powiązanej z wyzwalaczem.
- [dla każdego wiersza]: Określa wyzwalacz na poziomie wiersza, tj. wyzwalacz zostanie wykonany dla każdego wiersza, którego to dotyczy.
- [trigger_body]: Zapewnia operację, która ma zostać wykonana po uruchomieniu wyzwalacza
Dlaczego stosujemy wyzwalacze?
Gdy w określonych pożądanych scenariuszach będziemy musieli wykonać pewne czynności automatycznie, przydatne okażą się wyzwalacze. Na przykład musimy być świadomi częstotliwości i czasu wprowadzania zmian w tabeli, która podlega ciągłym zmianom. W takich przypadkach moglibyśmy utworzyć wyzwalacz wstawiający wymagane dane do innej tabeli, jeśli tabela podstawowa uległa jakimkolwiek zmianom.
Różne typy wyzwalaczy w SQL Server
Istnieją dwie kategorie wyzwalaczy:
- Wyzwalacz DDL
- Wyzwalacz DML
- Wyzwalacze logowania
Wyzwalacze DDL
Zdarzenia poleceń języka definicji danych (DDL), takie jak Create_table, Create_view, drop_table, Drop_view i Alter_table, powodują aktywację wyzwalaczy DDL.
Serwer SQL
create trigger safety on database for create_table,alter_table,drop_table as print 'you can not create,drop and alter tab>
Wyjście:
Wyzwalacze DML
Dane używają zdarzeń poleceń języka manipulacji (DML), które rozpoczynają się od wstawek, aktualizacji i usuwania, co uruchamia wyzwalacze DML. odpowiadające wstawce_tabeli, aktualizacji_widoku i usunięciu_tabeli.
indeks javy
Serwer SQL
create trigger deep on emp for insert,update ,delete as print 'you can not insert,update and delete this table i' rollback;>
Wyjście:
Wyzwalacze logowania
wyzwalacze logowania są wyzwalane w odpowiedzi na zdarzenie LOGON. Kiedy sesja użytkownika jest tworzona z instancją SQL Server po zakończeniu procesu uwierzytelniania logowania, ale przed ustanowieniem sesji użytkownika, ma miejsce zdarzenie LOGON. W rezultacie komunikaty instrukcji PRINT i wszelkie błędy wygenerowane przez wyzwalacz będą widoczne w dzienniku błędów programu SQL Server. Błędy uwierzytelniania uniemożliwiają użycie wyzwalaczy logowania. Wyzwalacze te mogą służyć do śledzenia aktywności logowania lub ustawiania limitu liczby sesji, jakie może mieć dany login w celu kontrolowania i zarządzania sesjami serwera.
W jaki sposób SQL Server wyświetla wyzwalacz?
Wyzwalacz pokazu lub listy jest przydatny, gdy mamy wiele baz danych z wieloma tabelami. To zapytanie jest bardzo przydatne, gdy nazwy tabel są takie same w wielu bazach danych. Listę wszystkich wyzwalaczy dostępnych w SQL Server możemy wyświetlić za pomocą poniższego polecenia:
Składnia:
Z sys.triggers, WYBIERZ nazwę, is_instead_of_trigger
typ JEŚLI = „TR”;
SQL Server Management Studio bardzo ułatwia wyświetlanie lub wyświetlanie listy wszystkich wyzwalaczy dostępnych dla dowolnej tabeli. Poniższe kroki pomogą nam to osiągnąć:
Idź do Bazy danych wybierz żądaną bazę danych, a następnie ją rozwiń.
- Wybierz Stoły menu i rozwiń je.
- Wybierz dowolną konkretną tabelę i rozwiń ją.
Otrzymamy tutaj różne opcje. Kiedy wybieramy Wyzwalacze opcję, wyświetla wszystkie wyzwalacze dostępne w tej tabeli.
PRZED i PO Wyzwoleniu
Wyzwalacze BEFORE uruchamiają akcję wyzwalającą przed wykonaniem instrukcji wyzwalającej. AFTER wyzwala akcję wyzwalającą po uruchomieniu instrukcji wyzwalającej.
Przykład
Baza danych Student Report Database, w której odnotowywane są oceny uczniów. W takim schemacie utwórz wyzwalacz, aby suma i procent określonych ocen były automatycznie wstawiane przy każdym wstawianiu rekordu.
W tym przypadku wyzwalacz zostanie wywołany przed wstawieniem rekordu, aby można było użyć znacznika BEFORE.
Załóżmy, że schemat bazy danych
Zapytanie
mysql>>desc Student;>
Wyzwalacz SQL do instrukcji problemu.
Powyższa instrukcja SQL utworzy wyzwalacz w bazie danych uczniów, w którym za każdym razem, gdy zostaną wprowadzone oceny z przedmiotów, przed wstawieniem tych danych do bazy danych, wyzwalacz obliczy te dwie wartości i wstawi je z wprowadzonymi wartościami. tj.
Wyjście
W ten sposób można tworzyć i wykonywać wyzwalacze w bazach danych.
Zaleta wyzwalaczy
Korzyści ze stosowania wyzwalaczy w SQL Server obejmują:
- Reguły obiektu bazy danych są ustalane przez wyzwalacze, które powodują cofnięcie zmian, jeśli nie zostaną spełnione.
- Wyzwalacz sprawdzi dane i, jeśli to konieczne, dokona zmian.
- Integralność danych możemy wymusić dzięki wyzwalaczom.
- Dane są sprawdzane za pomocą wyzwalaczy przed wstawieniem lub aktualizacją.
- Wyzwalacze pomagają nam w prowadzeniu rejestru rekordów.
- Dzięki temu, że nie trzeba ich każdorazowo kompilować, wyzwalacze poprawiają wydajność zapytań SQL.
- Kod po stronie klienta jest redukowany przez wyzwalacze, co pozwala zaoszczędzić czas i pracę.
- Konserwacja spustu jest prosta.
Niekorzyść wyzwalaczy
Wady używania wyzwalaczy w SQL Server obejmują:
- Tylko wyzwalacze pozwalają na użycie rozszerzonych walidacji.
- Stosowane są automatyczne wyzwalacze, a użytkownik nie jest świadomy, kiedy są one wykonywane. W związku z tym trudno jest rozwiązać problemy pojawiające się w warstwie bazy danych.
- Narzut serwera bazy danych może wzrosnąć w wyniku wyzwalaczy.
- W pojedynczej instrukcji CREATE TRIGGER możemy określić tę samą akcję wyzwalającą dla wielu akcji użytkownika, takich jak INSERT i UPDATE.
- Do tworzenia wyzwalaczy dostępna jest tylko bieżąca baza danych, ale nadal można tworzyć odniesienia do obiektów poza bazą danych.
Często Zadawane Pytania
P1: Co to jest wyzwalacz SQL?
Odpowiedź:
Wyzwalacz SQL to obiekt bazy danych powiązany z tabelą i automatycznie wykonujący zestaw instrukcji SQL, gdy w tej tabeli wystąpi określone zdarzenie. Wyzwalacze służą do egzekwowania reguł biznesowych, utrzymywania integralności danych i automatyzowania niektórych działań w bazie danych. Mogą być wyzwalane przez różne zdarzenia, takie jak wstawianie, aktualizowanie lub usuwanie danych w tabeli, i umożliwiają wykonanie dodatkowych operacji na podstawie tych zdarzeń.
P2: Jak działają wyzwalacze SQL?
Odpowiedź:
Wyzwalacze SQL są definiowane za pomocą instrukcji SQL i są powiązane z konkretną tabelą. Kiedy zdefiniowane zdarzenie wyzwalające (np. INSERT, UPDATE, DELETE) wystąpi w tej tabeli, powiązany kod wyzwalający jest wykonywany automatycznie. Kod wyzwalacza może składać się z instrukcji SQL, które umożliwiają manipulowanie danymi w tej samej lub innych tabelach, wymuszanie ograniczeń lub wykonywanie innych działań. Wyzwalacze są wykonywane w zakresie transakcji i można je zdefiniować tak, aby były wykonywane przed lub po zdarzeniu wyzwalającym.
P3: Jakie są korzyści ze stosowania wyzwalaczy SQL?
Odpowiedź:
Korzyści ze stosowania wyzwalaczy SQL obejmują:
Integralność danych: wyzwalacze umożliwiają egzekwowanie złożonych reguł biznesowych i ograniczeń na poziomie bazy danych, zapewniając spójność i dokładność danych.
Automatyzacja: wyzwalacze mogą automatyzować powtarzalne lub złożone zadania, wykonując predefiniowane działania za każdym razem, gdy wystąpi określone zdarzenie. Zmniejsza to potrzebę ręcznej interwencji i poprawia wydajność.
ile tygodni ma miesiącŚcieżki audytu: wyzwalaczy można używać do śledzenia zmian wprowadzonych w danych, takich jak rejestrowanie modyfikacji w osobnej tabeli audytu. Pomaga to w kontrolowaniu i utrzymywaniu historii zmian danych.
Walidacja danych: wyzwalacze mogą przeprowadzać dodatkowe kontrole walidacyjne danych przed ich wstawieniem, aktualizacją lub usunięciem, zapewniając, że w bazie danych będą przechowywane wyłącznie ważne i zgodne dane.