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 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