W tym artykule zbadamy, jak tworzyć i pracować z wyzwalaczami na SQL Server.
Istnieją trzy główne typy wyzwalaczy w SQL Server:
Poznajmy te wyzwalacze w tym przewodniku.
SQL Server DML Triggers
DML lub manipulacja danymi Manipulacjami wyzwalacze są rodzajem wyzwalaczy, które strzelają w odpowiedzi na działanie wkładki, aktualizacji i usuwania na tabeli lub widoku. Wyzwalacze DML będą uruchomione po wykonaniu dowolnej prawidłowej operacji, czy dotknięto jakiekolwiek wiersze.
Utwórz DML po wyzwoleniu
Na serwerze SQL możesz utworzyć spust DML za pomocą instrukcji Utwórz Trigger.
Utwórz nazwę_nazową Schema.Trigger_nameRozbijmy powyższą składnię:
Aby nauczyć się tworzyć i używać wyzwalacza DML, weźmy praktyczny przykład.
Utwórz przykładową bazę danych i wstaw dane podane w zestawie zapytań pokazanych poniżej:
-- Utwórz przykładową bazę danychPo uzyskaniu przykładowych danych możemy kontynuować i utworzyć spust DML, aby strzelać po operacji aktualizacji na tabeli.
Rozważ przykład pokazany poniżej:
-- Utwórz tabelę, aby przechowywać historię aktualizacjiPowyższe zapytanie utworzy spust, który strzela, gdy wykonamy aktualizację na tabeli. Aby przetestować spust, możemy uruchomić aktualizację jako:
-- Tabela aktualizacjiPo wykonaniu możemy sprawdzić, czy spust działał, wybierając kolumny w tabeli zmodyfikowanej.
-- Sprawdź tabelę zmodyfikowanąW SSMS można wyświetlić wyzwalacze na stole, rozszerzając opcję wyzwalaczy:
Utwórz zamiast wyzwalaczy
Innym typem wyzwalaczy DML na SQL Server jest zamiast wyzwalaczy. Są to rodzaj wyzwalaczy, które wykonują zamiast instrukcji DML. Na przykład, jeśli określamy instrukcję Usuń, możemy użyć zamiast wyzwalaczy do uruchomienia przed operacją.
Składnia do tworzenia zamiast spustu jest jak pokazano:
Utwórz nazwę_nazową Schema.Trigger_nameNa przykład zapytanie poniżej tworzy wyzwalacz, który wyświetla komunikat, gdy operacja wstawka jest wykonywana na tabeli.
-- Utwórz zamiast spustuPo uruchomieniu powyższego zapytania powinniśmy uzyskać wiadomość wskazującą, że nie możemy wykonać wkładki na tabeli.
BłądNie możesz wstawić w tym tabeli
SQL DDL wyzwalacze
DDL lub język definicji danych to wyzwalacze, które reagują na zdarzenia na serwer lub bazę danych zamiast tabeli. DDL wyzwalacze odpowiedzą na takie zdarzenia, jak Drop, Grant, Deny, Revok, Aktualizuj statystyki, tworzyć i zmieniać.
Utwórz wyzwalacze DDL
Składnia do utworzenia wyzwalacza DDL jest jak pokazano:
Utwórz Trigger Trigger_nameMożemy rozbić składnię jako:
Poniższe zapytanie Utwórz wyzwalacz DDL, który strzela, gdy wystawiono instrukcję tabeli upuszczenia.
-- Utwórz spust DDLPo uruchomieniu zdarzenia Drop w bazie danych wyzwalacz wyświetli informacje o zdarzeniu za pomocą funkcji eventData ().
Możemy przetestować spust:
-- Wyzwalacz testowyZapytanie powinno zwrócić informacje XML o wydarzeniu jako:
W SSMS można wyświetlić wyzwalacze, rozszerzając wyzwalacze bazy danych w ramach programowania w docelowej bazie danych.
Włącz/wyłącz wyzwalacze
SQL Server umożliwia włączenie i wyłączanie wyzwalaczy. Aby włączyć spust na stole, użyj zapytania jako:
Włącz Trigger Update_trigger w sprzedaży;Gdzie aktualizacja_trigger reprezentuje nazwę i sprzedaż wyzwalacza reprezentują nazwę tabeli.
Możesz także włączyć wszystkie wyzwalacze na stole jako:
Włącz wyzwalacz wszystkie na nazwa_beli;Aby włączyć wyzwalacz bazy danych, użyj zapytania:
Włącz Trigger Drop_ddl_trigger w sprzedaży;Tutaj Drop_ddl_trigger reprezentuje nazwę i sprzedaż wyzwalacza reprezentują bazę danych.
Aby włączyć wszystkie wyzwalacze bazy danych, użyj zapytania:
Włącz wyzwalacz w sprzedaży;Aby wyłączyć spust tabeli lub bazy danych, wymień słowo kluczowe Włącz z wyłączeniem ☺️.
Usuń spust
Aby usunąć spust, możesz użyć instrukcji Drop jak pokazano:
Upuść spust, jeśli istnieje nazwa Trigger;SQL Server pokazuje wszystkie wyzwalacze
Aby wyświetlić wszystkie wyzwalacze w instancji SQL Server, użyj zapytania, jak pokazano:
Wybierz nazwę, type_desc, is_disabled, is_instead_of_trigger z SYS.Wyzwalacza gdzie typ = „tr”Zapytanie powinno zwrócić wszystkie wyzwalacze w instancji SQL Server jako:
Wyzwalacze logowania SQL Server
Wyzwalacze logowania są rodzajem wyzwalaczy, które wykonują, gdy na serwerze występuje aktywność logowania. Tego rodzaju wyzwalacze działają po udanym uwierzytelnianiu, ale przed utworzeniem sesji użytkownika. Ponieważ są one używane do obsługi aktywności logowania, tworzymy je na poziomie serwera, jak pokazano w poniższym przykładzie:
OSTROŻNOŚĆ: Poniższy czynnik może zapobiec przyszłym loginom na serwerze. Upewnij się, aby usunąć przed loginem.
OSTROŻNOŚĆ - ☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️.
-- Utwórz wyzwalacz logowaniaSpust wyświetli komunikat, gdy użytkownik zaloguje się na serwerze.
Wniosek
W tym przewodniku zrozumiałeś różne rodzaje wyzwalaczy, jak tworzyć, włączać, wyłączać, usuwać i przeglądać wyzwalacze na SQL Server.