Implementowanie DML wyzwalaczy
Przed utworzeniem wyzwalacz DML, uznają, że:
Instrukcja tworzenia WYZWALACZA musi być pierwszą instrukcją w partia.Wszystkie instrukcje, które należy wykonać w danej partia są interpretowane jako część definicji instrukcja tworzenia WYZWALACZA.
Uprawnienie do tworzenia DML wyzwala domyślnie właściciela tabela, który nie może dokonać transferu do innych użytkowników.
Wyzwalacze DML są obiekty bazy danych i ich nazwy muszą spełniać zasady dla identyfikatorów.
Można utworzyć DML wyzwalają tylko w bieżącej bazie danych, chociaż wyzwalacz DML można odwoływać się do obiektów poza z bieżącej bazy danych.
Nie można utworzyć wyzwalacz LŚD na tymczasowy lub tabela systemowa, chociaż LŚD wyzwalaczy można odwoływać się do tabel tymczasowych.Nie powinno to odwołanie do tabel systemowych; Użyj Informacji O schemacie widoki zamiast.
ZAMIAST usuwania i aktualizacji INSTEAD OF wyzwalacze nie można zdefiniować w tabela klucz obcy zdefiniowane przy użyciu akcja usuwania lub aktualizacji.
Chociaż instrukcji OBCIĄĆ tabelę przypomina Instrukcja DELETE bez klauzula WHERE (usuwa wszystkie wiersze), nie powoduje usuwanie wyzwalaczy na ogień, ponieważ instrukcja OBCIĄĆ tabeli nie jest zalogowany.
WRITETEXT instrukcja nie powoduje INSERT lub UPDATE wyzwalaczy na ogień.
Ważne: |
---|
Możliwość zwrócić zestaw wyników z wyzwalacze zostaną usunięte w przyszłej wersja programu SQL Server.Wyzwalacze, które zwracają zestawów wyników może spowodować nieoczekiwane zachowanie aplikacji, które nie są przeznaczone do pracy z nimi.Plan do modyfikowania aplikacji, które aktualnie tym i uniknięcia zwracać zestawów wyników z wyzwalaczy nowych prac rozwojowych.Aby uniemożliwić zwrócenie wyników wyzwalaczy zestaws SQL Server, zestaw Nie zezwalaj na wyniki z opcji wyzwalaczy 1.Domyślne ustawienie tej opcji będzie 1 w przyszłej wersja programu SQL Server. |
Podczas tworzenia wyzwalacz DML, określić:
Nazwa.
Tabela, od którego wyzwalacz jest zdefiniowany.
Jeśli wyzwalacz jest ognia.
Instrukcje modyfikacji danych wyzwalacz.Prawidłowe opcje to INSERT, UPDATE lub DELETE.Modyfikowanie danych w więcej niż jednym instrukcja można uaktywnić jednym wyzwalaczem.Na przykład wyzwalacz może być uaktywniona przez wstawianie i instrukcja UPDATE.
Instrukcje programowania, które wykonał akcja wyzwalacza.
Wiele DML wyzwalaczy
Tabela może mieć wiele wyzwalaczy po danego typu, pod warunkiem, że mają różne nazwy; Każdy wyzwalacz może wykonywać liczne funkcje.Jednak każdy wyzwalacz może dotyczyć tylko jedną tabela, chociaż jednego wyzwalacza można stosować do dowolnego podzbiór trzy akcje użytkownika (UPDATE, INSERT i DELETE).
Tabela może mieć tylko jedną zamiast wyzwalacza danego typu.
Wyzwalacz uprawnienia i prawa własności
Wyzwalacze są tworzone w schemacie tabela lub widoku, na którym są zdefiniowane.Na przykład jeśli wyzwalacz Trigger1 jest tworzony w tabela HumanResources.Employee, nazwa kwalifikowana schematu wyzwalacza jest HumanResources.Trigger1.
Domyślnie uprawnienia do tworzenia WYZWALACZA właściciela tabela zdefiniowano wyzwalacz, sysadmin stała rola serweraoraz członkowie db_owner i db_ddladmin ról stałej bazy danych i są niezbywalne nie.
Wyzwalacza INSTEAD OF tworzone jest widok, łańcuch własności jest przerywane, jeżeli właściciela widoku nie jest również właścicielem tabel bazowych odwołuje się widok i wyzwalacza.Dla tabela bazowa nie są własnością właściciela widoku właściciela tabeli oddzielnie musi udzielić odpowiednich uprawnień do nikogo odczytu lub aktualizacji widoku.Ten sam użytkownik jest właścicielem widoku i tabel podstawowych, muszą udzielić uprawnień innych użytkowników tylko w widoku, a nie poszczególnych tabel bazowych.Aby uzyskać więcej informacji, zobacz Łańcuchy własności.
Aby utworzyć wyzwalacz