DML Trigger Execution
Po wyzwalacze nigdy nie są wykonywane, jeżeli nastąpi naruszenie ograniczenia; dlatego te wyzwalacze nie można użyć do żadnych operacji, które mogą uniemożliwić naruszeniach ograniczeń.
INSTEAD z wyzwalacze są uruchamiane zamiast wyzwalającego akcja.Te wyzwalacze są uruchamiane po dodaje and usunięte tabel, odzwierciedlając zmiany w tabela bazowa są tworzone, ale przed innymi działaniami są pobierane.Są one wykonywane przed ograniczenia, dzięki czemu można wykonać wstępne przetwarzanie uzupełniające akcje ograniczenie.
Jeśli wyzwalacz Z INSTEAD zdefiniowane w tabela jest wykonywana instrukcja przed tabela, która będzie zazwyczaj ognia ponownie wyzwalacza Z INSTEAD, wyzwalacz nie jest wywoływana cyklicznie.Zamiast tego w instrukcja są przetwarzane tak, jakby w tabela nie miał a nie z wyzwalacz i łańcuch ograniczenie działań i później wykonań wyzwalacz jest uruchamiany.Na przykład jeśli wyzwalacz DML jest zdefiniowany jako wyzwalacz INSERT INSTEAD Z tabela, a wyzwalacza wykonuje instrukcję SQL INSERT na tej samej tabela, wykonywane przez wyzwalacz Z INSTEAD instrukcja INSERT nie będzie wywoływał wyzwalacz ponownie.Wykonane przez wyzwalacz INSERT rozpoczyna się proces wykonywania czynności, ograniczenia i wyzwalania wyzwalacze później INSERT zdefiniowanych dla tabela.
Jeśli wyzwalacz Z INSTEAD zdefiniowane w widoku jest wykonywana instrukcja wobec widoku, który będzie zazwyczaj ognia ponownie wyzwalacza Z INSTEAD, nie jest on nazywany cyklicznie.Zamiast tego w instrukcja jest rozwiązywana postać modyfikacji dla podstawowych tabel, będących podstawą widoku.W takim przypadek definicja widoku musi spełniać wszystkie ograniczenia dla widoku programu mogą być aktualizowane.Aby uzyskać definicję widoki mogą być aktualizowane zobacz Modifying Data Through a View. Na przykład jeśli DML wyzwalacz jest zdefiniowany jako wyzwalacz Z INSTEAD UPDATE dla widoku wyzwalacza wykonuje instrukcję UPDATE odwoływania się do tego samego widoku, instrukcja UPDATE, wykonywane przez wyzwalacz Z INSTEAD nie wywołuje wyzwalacz ponownie.Aktualizacja wykonywane przez wyzwalacz jest przetwarzany przed widok tak, jakby widoku nie ma wyzwalacz Z INSTEAD.W kolumnach zmienione przez AKTUALIZACJĘ muszą być rozwiązane do pojedynczej tabela bazowa.Każda modyfikacja nazwę tabela bazowa podstawowej uruchamia łańcucha stosowanie ograniczeń i wyzwalania później Wyzwalacze dla tabeli.
Wyzwalacz DML obciążenie jest zazwyczaj niski.Czas związanych z systemem wyzwalacz DML rozkłada się głównie w odwoływaniu się do innych tabel, które mogą być w pamięci lub na urządzeniu bazy danych.The deleted and inserted tables are always in memory.Lokalizacja inne tabele, do których odwołuje się wyzwalacz określa czas, operacja wymaga.
Uwaga
Nie zaleca się używania kursorów w DML wyzwalaczy z powodu potencjalnie negatywny wpływ na wydajność.Zaprojektowanie wyzwalacz DML, którego dotyczy wielu zestaw wierszy za pomocą logiki oparte na zestawie zestaw wierszy zamiast kursorów.
Wykonanie wyzwalacz DML i widoki na podzielonym na partycje
Sposób pożaru wyzwalaczy aktualizacji i usuwania tabel, które opierają się widokiem podzielonym na partycje zmienił się ze sposobem ich uruchomienie w SQL Server 2000. W SQL Server 2000, podczas generowania instrukcja SQL UPDATE lub DELETE przed widokiem podzielonym na partycje, lokalne lub rozproszonych, UPDATE lub DELETE wyzwalaczy, zdefiniowanych na tabele bazowe widoku pożaru. Obejmują one wyzwalaczy w tabelach, których nie dotyczy aktualizacji lub usuwania operacji.W SQL Server 2008 i SQL Server 2005, aktualizacji lub DELETE wyzwalać uruchamiany tylko w przypadku aktualizacji występuje w tabela bazowa, w którym zdefiniowano wyzwalacz operacji lub usunięcia. To zachowanie jest takie same dla obu po a, a nie z wyzwalaczami.
Na przykład należy wziąć pod uwagę widokiem podzielonym na partycje WA , która składa się z pól z tabel T1 and TABELA T2.Ponadto oba T1 and TABELA T2 zostały zdefiniowane na nich wyzwalacze UPDATE.W SQL Server 2000, wydane przed instrukcja UPDATE WA dotyczy tylko wierszy w T1 oba powoduje wyzwalacze UPDATET1 and TABELA T2 uruchomienie.W SQL Server 2008 i SQL Server 2005, tylko wyzwalacza UPDATE jest zdefiniowany na T1 uruchamiany.
W poniższych tabelach podsumowanie zmiany zachowania.
Wstawianie, aktualizacja lub usuń operacji na lokalny widok partycjonowany
|
SQL Server 2000 |
Bieżącej wersji |
|---|---|---|
WSTAW WYZWALACZ |
Uruchamiany tylko na tabele. |
Uruchamiany tylko na tabele. |
AKTUALIZACJA WYZWALACZA |
Uruchamiany, dla wszystkich tabel, będących podstawą widoku podzielonym na partycje, zdefiniowano tego typu wyzwalacza. |
Uruchamiany tylko na tabele. |
USUWANIE WYZWALACZA |
Uruchamiany, dla wszystkich tabel, będących podstawą widoku podzielonym na partycje, zdefiniowano tego typu wyzwalacza. |
Uruchamiany tylko na tabele. |
Wstawianie, aktualizacja lub usuń operacji z rozproszonej widokiem podzielonym na partycje
|
SQL Server 2000 |
Bieżącej wersji |
|---|---|---|
WSTAW WYZWALACZ |
Uruchamiany tylko na tabele rozproszony widok partycjonowany.Wyzwalacze, które są definiowane w tabelach na wystąpienie lokalnego i zdalnego wystąpienia może wystrzelić, jeśli tabele są zagrożone. |
Uruchamiany tylko na tabele rozproszony widok partycjonowany.Wyzwalacze, które są definiowane w tabelach na wystąpienie lokalnego i zdalnego wystąpienia może wystrzelić, jeśli tabele są zagrożone. |
AKTUALIZACJA WYZWALACZA |
Uruchamiany, dla wszystkich tabel, które są podstawową widoku podzielonym na partycje, zdefiniowano tego typu wyzwalacza. |
Uruchamiany, dla wszystkich tabel w wystąpieniu programu zdalnego zdefiniowano tego typu wyzwalacza.Uruchamiany tylko na tabele na lokalne wystąpienie. |
USUWANIE WYZWALACZA |
Uruchamiany, dla wszystkich tabel, będących podstawą widoku podzielonym na partycje, zdefiniowano tego typu wyzwalacza. |
Uruchamiany, dla wszystkich tabel w wystąpieniu programu zdalnego zdefiniowano tego typu wyzwalacza.Uruchamiany tylko na tabele na lokalne wystąpienie. |