Udostępnij za pośrednictwem


Wykonania DML wyzwalaczy

Przed utworzeniem wyzwalacz DML uznają, że:

  • Instrukcja CREATE TRIGGER musi być pierwszą instrukcją w instancji.Wszystkie inne instrukcje występujące w tym partia są interpretowane jako część definicji instrukcja CREATE TRIGGER.

  • Uprawnienie do tworzenia DML wyzwala wartością domyślną jest właścicielem tabela, która nie może przekazać innym użytkownikom.

  • Wyzwalacze DML są obiektami bazy danych, a ich nazwy muszą być zgodne z zasadami dla identyfikatorów.

  • Wyzwalacz DML można tworzyć tylko w bieżącej bazie danych, chociaż wyzwalacza DML odwoływania się do obiektów poza z bieżącej bazy danych.

  • Wyzwalacz DML nie można utworzyć na tabela tymczasowe lub systemu, mimo że DML Wyzwalacze mogą odwoływać się do tabel tymczasowych.Tabele systemowe nie powinny się odwoływać; Użyj Informacje o schemacie widoki zamiast niego.

  • ZAMIAST Z DELETE i UPDATE INSTEAD Z wyzwalaczy nie mogą być definiowane w tabela, która ma zdefiniowane przy użyciu akcja DELETE lub UPDATE klucz obcy.

  • Mimo, że instrukcja OBCINANIA tabela przypomina instrukcji DELETE bez klauzula WHERE (powoduje usunięcie wszystkich wierszy), nie powoduje wyzwalacze DELETE ognia, ponieważ instrukcja OBCINANIA tabela nie jest zalogowany.

  • Instrukcja WRITETEXT nie spowoduje, że wyzwalacze INSERT lub UPDATE uruchomienie.

Important noteImportant Note:

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 w aplikacjach, które nie są przeznaczone do pracy z nimi.Uniknąć przesłać zestaw wyników z wyzwalaczy w nowej pracy rozwoju i zaplanować do modyfikowania aplikacji, które aktualnie to zrobić.Aby uniemożliwić zwrócenie wyników wyzwalacze ustawia się w SQL Server, ustaw disallow results from triggers Option 1. Domyślnym ustawieniem tej opcji będzie 1 w przyszłej wersja programu SQL Server.

Podczas tworzenia wyzwalacz DML, należy określić:

  • Nazwa.

  • Tabela, której wyzwalacz jest zdefiniowany.

  • Jeśli wyzwalacz jest uruchomienie.

  • Instrukcje zmiany danych, które aktywowania wyzwalacza.Prawidłowe opcje to INSERT UPDATE, lub DELETE.Więcej niż jeden modyfikacji danych instrukcja można uaktywnić ten sam wyzwalacz.Na przykład wyzwalacz może być uaktywniona przez INSERT i UPDATE instrukcja SQL.

  • Instrukcje programowania, który wykonał akcja wyzwalacza.

Wiele wyzwalaczy DML

Tabela może mieć wiele wyzwalaczy po danego typu, pod warunkiem, że mają one różne nazwy; każdy wyzwalacz może wykonać wiele funkcji.Jednak każdy wyzwalacz może dotyczyć tylko jedną tabela, chociaż jednego wyzwalacza można stosować do wszystkich trzech podzbiór akcje użytkownika (UPDATE, INSERT i DELETE).

Tabela może mieć tylko jedną, a nie z wyzwalaczem danego typu.

Wyzwalacz uprawnienia i własności

Wyzwalacze są tworzone w schemacie tabela lub widok, w którym są zdefiniowane.Na przykład jeśli wyzwalacz Trigger1 Utworzono tabela HumanResources.Employee, nazwa kwalifikowana schematu wyzwalacza jest HumanResources.Trigger1 .

Domyślnie uprawnienia CREATE TRIGGER właściciela tabela, na którym jest zdefiniowana wyzwalacz, sysadmin Rola serwera i członkowie db_owner and db_ddladmin stałe role bazy danych i nie są zbywalne.

Jeśli wyzwalacz Z INSTEAD jest tworzona w widoku wykresu, łańcuch własności jest przerywane, jeśli właściciel widoku nie jest również właścicielem tabel bazowych odwołuje się do widoku, a wyzwalacz.Dla tabela bazowa nie należących do właściciela widoku właściciela tabeli oddzielnie musi udzielić uprawnienia niezbędne do anybody odczytu lub aktualizacji w widoku.Ten sam użytkownik jest właścicielem, zarówno w widoku, jak i podstawowych tabel bazowych, muszą udzielić uprawnień innych użytkowników tylko w widoku, a nie poszczególnych tabel bazowych.Aby uzyskać więcej informacji zobaczOwnership Chains.

Aby utworzyć wyzwalacz