Udostępnij za pośrednictwem


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żna informacjaWaż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