Udostępnij za pośrednictwem


Usuwanie lub wyłączanie wyzwalaczy DML

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

W tym temacie opisano sposób usuwania lub wyłączania wyzwalacza DML w programie SQL Server przy użyciu programu SQL Server Management Studio lub Języka Transact-SQL.

w tym temacie

Przed rozpoczęciem

Zalecenia

  • Po usunięciu wyzwalacza jest on usuwany z bieżącej bazy danych. Nie ma to wpływu na tabelę i dane, na których jest oparta. Usunięcie tabeli powoduje automatyczne usunięcie wszystkich wyzwalaczy w tabeli.

  • Wyzwalacz jest domyślnie włączony podczas jego tworzenia.

  • Wyłączenie wyzwalacza nie powoduje jego usunięcia. Wyzwalacz nadal istnieje jako obiekt w bieżącej bazie danych. Jednak wyzwalacz nie zostanie wyzwolony, gdy zostanie wykonana dowolna instrukcja INSERT, UPDATE lub DELETE, na której został zaprogramowany. Wyzwalacze, które są wyłączone, można ponownie przywrócić. Włączenie wyzwalacza nie powoduje jego ponownego utworzenia. Wyzwalacz jest uruchamiany w taki sam sposób, jak w momencie jego utworzenia.

Bezpieczeństwo

Uprawnienia

Aby usunąć wyzwalacz DML, wymagane jest uprawnienie ALTER w tabeli lub widoku, w którym zdefiniowano wyzwalacz.

Aby wyłączyć lub włączyć wyzwalacz DML, co najmniej użytkownik musi mieć uprawnienie ALTER w tabeli lub widoku, w którym został utworzony wyzwalacz.

Korzystanie z programu SQL Server Management Studio

Aby usunąć wyzwalacz DML

  1. W Eksploratorze obiektów połącz się z wystąpieniem silnika bazy danych, a następnie rozwiń to wystąpienie.

  2. Rozwiń bazę danych, którą chcesz, rozwiń węzeł Tabele, a następnie rozwiń tabelę, która zawiera wyzwalacz, który chcesz usunąć.

  3. Rozwiń Wyzwalacze, kliknij prawym przyciskiem myszy wyzwalacz, aby usunąć, a następnie kliknij Usuń.

  4. W oknie dialogowym Usuń obiekt sprawdź, czy wyzwalacz do usunięcia jest poprawnie ustawiony, a następnie kliknij OK.

Aby wyłączyć i włączyć wyzwalacz DML

  1. W Eksploratorze Obiektów połącz się z wystąpieniem Silnika Bazy Danych, a następnie rozwiń to wystąpienie.

  2. Rozwiń bazę danych, którą chcesz, rozwiń węzeł Tabele, a następnie rozwiń tabelę zawierającą wyzwalacz, który chcesz wyłączyć.

  3. Rozwiń Wyzwalacze, kliknij prawym przyciskiem myszy wyzwalacz, aby wyłączyć, a następnie kliknij Wyłącz.

  4. Aby włączyć wyzwalacz, kliknij przycisk Włącz.

Korzystanie z Transact-SQL

Aby usunąć wyzwalacz DML

  1. Połącz się z silnikiem bazy danych.

  2. Na pasku Standard kliknij pozycję Nowe zapytanie.

  3. Skopiuj i wklej następujące przykłady w oknie zapytania. Wykonaj instrukcję CREATE TRIGGER, aby utworzyć wyzwalacz Sales.bonus_reminder. Aby usunąć wyzwalacz, wykonaj instrukcję DROP TRIGGER.

--Create the trigger.  
USE AdventureWorks2022;  
GO  
IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL  
    DROP TRIGGER Sales.bonus_reminder;  
GO  
CREATE TRIGGER Sales.bonus_reminder  
ON Sales.SalesPersonQuotaHistory  
WITH ENCRYPTION  
AFTER INSERT, UPDATE   
AS RAISERROR ('Notify Compensation', 16, 10);  
GO  
  
--Delete the trigger.  
USE AdventureWorks2022;  
GO  
IF OBJECT_ID ('Sales.bonus_reminder', 'TR') IS NOT NULL  
   DROP TRIGGER Sales.bonus_reminder;  
GO  
  

Aby wyłączyć oraz ponownie włączyć wyzwalacz DML

  1. Połącz się z silnikiem bazy danych.

  2. Na pasku standardowym kliknij pozycję Nowe zapytanie.

  3. Skopiuj i wklej następujące przykłady w oknie zapytania. Wykonaj instrukcję CREATE TRIGGER, aby utworzyć wyzwalacz Sales.bonus_reminder. Aby wyłączyć i włączyć wyzwalacz, wykonaj odpowiednio instrukcje DISABLE TRIGGER i ENABLE TRIGGER.

--Create the trigger.  
USE AdventureWorks2022;  
GO  
IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL  
    DROP TRIGGER Sales.bonus_reminder;  
GO  
CREATE TRIGGER Sales.bonus_reminder  
ON Sales.SalesPersonQuotaHistory  
WITH ENCRYPTION  
AFTER INSERT, UPDATE   
AS RAISERROR ('Notify Compensation', 16, 10);  
GO  
  
--Disable the trigger.  
USE AdventureWorks2022;  
GO  
DISABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory;  
GO  
  
--Enable the trigger.  
USE AdventureWorks2022;  
GO  
ENABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory;  
GO  

Zobacz też

ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
WYZWALACZ DROP (Transact-SQL)
WŁĄCZ WYZWALACZ (Transact-SQL)
WYŁĄCZ WYZWALACZ (Transact-SQL)
EVENTDATA (Transact-SQL)
uzyskać informacje o wyzwalaczach DML
sp_help (Transact-SQL)
sp_helptrigger (Transact-SQL)
sys.triggers (Transact-SQL)
sys.trigger_events (Transact-SQL)
sys.sql_modules (Transact-SQL)
sys.assembly_modules (Transact-SQL)
sys.server_triggers (Transact-SQL)
sys.wydarzenia_wyzwalacza_serwera (Transact-SQL)
sys.server_sql_modules (Transact-SQL)
sys.server_assembly_modules (Transact-SQL)