Udostępnij za pośrednictwem


DMLWykonanie wyzwalacza

Po wyzwalaczy nigdy nie są wykonywane, jeżeli występuje naruszenie ograniczenia; Dlatego te wyzwalacze nie można używać dla wszelkiego przetwarzania, które mogą uniemożliwić naruszenie ograniczenia.

INSTEAD OF wyzwalacze są uruchamiane zamiast wyzwalającego akcja.Te wyzwalacze są wykonywane po dodaje się i usunięte tabel, odzwierciedlając zmiany w tabela bazowa są tworzone, ale przed inne działania zostaną podjęte.Są one wykonywane przed wszystkimi ograniczeniami, więc można przeprowadzić wstępne przetwarzanie ograniczenie działania uzupełniające.

Jeżeli wykonuje wyzwalacza INSTEAD OF zdefiniowane w tabela instrukcja w tabela będzie zazwyczaj ognia ponownie wyzwalacza INSTEAD OF wyzwalacz nie jest wywoływana rekursywnie.Natomiast instrukcja jest przetwarzany, jakby tabela nie miał zamiast wyzwalacza uruchamia łańcucha ograniczenie działań i po wykonania wyzwalacza.Na przykład jeśli wyzwalacz DML jest zdefiniowany jako wyzwalacz INSTEAD OF WSTAW tabela i wyzwalacza wykonuje instrukcja INSERT na tej samej tabela, wykonywane przez wyzwalacza INSTEAD OF instrukcja INSERT nie wywołuje ponownie wyzwalacza.Wykonywane przez wyzwalacz INSERT rozpoczyna się proces wykonywania czynności, ograniczenia i wyzwalania wszelkie Wyzwalacze po WSTAWIĆ zdefiniowanych dla tabela.

Jeżeli wykonuje wyzwalacza INSTEAD OF zdefiniowane w widoku instrukcja przeciwko widok będzie zazwyczaj ognia ponownie wyzwalacza INSTEAD OF nie wywołana rekursywnie.Natomiast instrukcja jest rozpoznana jako zmiany w podstawowych tabelami w widoku.W takim przypadek definicja widoku musi spełniać wszystkie ograniczenia dla poddający się aktualizacji widok.Definicję aktualizowalna widoki Modyfikowanie danych przy użyciu widoku.Na przykład jeśli wyzwalacz DML jest zdefiniowany jako wyzwalacza INSTEAD OF AKTUALIZACJĘ widoku i wyzwalacza wykonuje instrukcję UPDATE odwoływanie się do tego samego widoku, wykonywane przez wyzwalacza INSTEAD OF instrukcja UPDATE nie wywołuje ponownie wyzwalacza.Przetwarzanie aktualizacji, wykonywane przez wyzwalacz widoku, jeśli widok nie miał wyzwalacza INSTEAD OF.Kolumny, zmienione przez AKTUALIZACJĘ muszą być rozwiązane do pojedynczego tabela bazowa.Każda modyfikacja podstawowej tabela bazowa uruchamia łańcucha stosowania ograniczeń i wyzwalania po wyzwalaczy zdefiniowanych dla tabeli.

wyzwalacz DMLobciążenie jest zazwyczaj niski.Czas zaangażowane w działania wyzwalacz DML rozkłada się głównie w odwoływanie się do innych tabel, które mogą być albo w pamięci lub na urządzenie bazy danych.Usunięte i dodaje się tabele są zawsze w pamięci.Określa lokalizację innych tabel, wywoływany przez wyzwalacz kwotę czas operacja wymaga.

Ostrzeżenie

Użyj kursorów w DML wyzwalacze nie jest zalecana ze względu na potencjalnie negatywny wpływ na wydajność.Służy do projektowania logiki oparte na zestawie zestaw wierszy zamiast kursorów wyzwalacz DML, który wpływa na wiele zestaw wierszy.

DMLWidoki podzielonym na partycje i wykonywania wyzwalacza

Sposób pożaru wyzwalaczy aktualizacji i usuwania tabel, które opierają się widokiem podzielonym na partycje zmienił się ze sposobem ich ognia w SQL Server 2000.W SQL Server 2000, gdy instrukcja UPDATE lub DELETE jest wydane przeciwko widokiem podzielonym na partycje, albo lokalne lub rozproszonych, aktualizacji lub usunięcia wyzwalaczy które są definiowane na tabele bazowe pożaru widoku.Obejmują one wyzwalaczy w tabelach, które nie dotyczy aktualizacji lub usuwania operacji.W SQL Server 2008 i SQL Server 2005, aktualizacji lub usunięcia wyzwolić uruchamiany tylko wtedy, gdy aktualizacja dotyczy tabela bazowa zdefiniowano wyzwalacz lub usunąć operacji.To zachowanie jest takie samo dla obu po i zamiast wyzwalaczy.

Na przykład, rozważmy widokiem podzielonym na partycje Wa , składa się z pól z tabel T1 i T2.Ponadto obie T1 i T2 zostały zdefiniowane na nich wyzwalaczy aktualizacji.W SQL Server 2000, instrukcja UPDATE wydane przeciwko Wa dotyczy tylko wierszy w T1 powoduje wyzwalaczy aktualizacji w obu T1 i T2 ognia.W SQL Server 2008 i SQL Server 2005, tylko wyzwalacza aktualizacji jest zdefiniowany na T1 pożarów.

Następująca tabela zawiera podsumowanie zmian w zachowaniu.

INSERT, Update lub usunąć operacji na lokalnym widokiem podzielonym na partycje

 

SQL Server 2000

Bieżące wydanie

WSTAW WYZWALACZ

Uruchamiany tylko na tabele.

Uruchamiany tylko na tabele.

AKTUALIZUJ WYZWALACZ

Uruchamiany, dla wszystkich tabel podstawowych podzielonym na partycje widoku zdefiniowano tego rodzaju wyzwalacza.

Uruchamiany tylko na tabele.

USUNIĘCIE WYZWALACZA

Uruchamiany, dla wszystkich tabel podstawowych podzielonym na partycje widoku zdefiniowano tego rodzaju wyzwalacza.

Uruchamiany tylko na tabele.

INSERT, Update operacji lub usunięcia z rozproszonych widokiem podzielonym na partycje

 

SQL Server 2000

Bieżące wydanie

WSTAW WYZWALACZ

Uruchamiany tylko na tabele rozproszony widok partycjonowany.Wyzwalacze zdefiniowanych tabel na wystąpienie lokalnego i zdalnego wystąpienia można ognia, jeśli tabele, których dotyczy problem.

Uruchamiany tylko na tabele rozproszony widok partycjonowany.Wyzwalacze zdefiniowanych tabel na wystąpienie lokalnego i zdalnego wystąpienia można ognia, jeśli tabele, których dotyczy problem.

AKTUALIZUJ WYZWALACZ

Uruchamiany, dla wszystkich tabel, które są podstawową podzielonym na partycje widoku zdefiniowano tego rodzaju wyzwalacza.

Uruchamiany, dla wszystkich tabel zdalnego wystąpienie zdefiniowano tego rodzaju wyzwalacza.Uruchamiany tylko na tabele na lokalne wystąpienie.

USUNIĘCIE WYZWALACZA

Uruchamiany, dla wszystkich tabel podstawowych podzielonym na partycje widoku zdefiniowano tego rodzaju wyzwalacza.

Uruchamiany, dla wszystkich tabel zdalnego wystąpienie zdefiniowano tego rodzaju wyzwalacza.Uruchamiany tylko na tabele na lokalne wystąpienie.