Modyfikowanie lub zmienianie nazwy wyzwalaczy DML
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
W tym artykule opisano sposób modyfikowania lub zmieniania nazwy wyzwalacza DML w programie SQL Server przy użyciu programu SQL Server Management Studio lub Transact-SQL.
Ograniczenia
Po zmianie nazwy wyzwalacza wyzwalacz musi znajdować się w bieżącej bazie danych, a nowa nazwa musi być zgodna z regułami dotyczącymi identyfikatorów .
Zalecenia
Unikaj używania procedury składowanej sp_rename, aby zmienić nazwę wyzwalacza. Zmiana dowolnej części nazwy obiektu może uszkodzić skrypty i procedury składowane. Zmiana nazwy wyzwalacza nie powoduje zmiany nazwy odpowiedniego obiektu w kolumnie definicji widoku katalogu sys.sql_modules. Zalecamy, aby zamiast tego usunąć i ponownie utworzyć wyzwalacz.
Jeśli zmienisz nazwę obiektu, do którego odwołuje się wyzwalacz DML, musisz zmodyfikować wyzwalacz tak, aby jego tekst odzwierciedlał nową nazwę. Dlatego przed zmianą nazwy obiektu najpierw wyświetl zależności obiektu, aby określić, czy proponowana zmiana ma wpływ na jakiekolwiek wyzwalacze.
Wyzwalacz DML można również zmodyfikować w celu zaszyfrowania jego definicji.
Aby wyświetlić zależności wyzwalacza, możesz użyć programu SQL Server Management Studio lub następujących widoków funkcji i wykazu:
Uprawnienia
Aby zmienić wyzwalacz DML, wymagane jest uprawnienie ALTER
do tabeli lub widoku, w którym zdefiniowano wyzwalacz.
Korzystanie z programu SQL Server Management Studio
Modyfikowanie wyzwalacza DML
W Eksploratorze obiektów połącz się z instancją aparatu bazy danych, a następnie rozwiń tę instancję.
Rozwiń odpowiednią bazę danych, rozwiń Tabele, a następnie rozwiń tabelę zawierającą wyzwalacz, który chcesz zmodyfikować.
Rozwiń Wyzwalacze, kliknij prawym przyciskiem myszy wyzwalacz, który chcesz zmodyfikować, a następnie wybierz opcję Modyfikuj.
Zmodyfikuj wyzwalacz, a następnie wybierz Wykonaj.
Zmienianie nazwy wyzwalacza DML
- usuń lub wyłącz wyzwalacz DML, którego nazwę chcesz zmienić.
- Utwórz nowy wyzwalacz DML, określając nową nazwę.
Użyj Transact-SQL
Modyfikowanie wyzwalacza przy użyciu polecenia ALTER TRIGGER
Połącz się z silnikiem bazy danych.
Na pasku standardowym wybierz pozycję Nowe zapytanie.
Skopiuj i wklej poniższy przykład do zapytania. Wykonaj pierwszy przykład, aby utworzyć wyzwalacz DML, który wyświetla klientowi komunikat zdefiniowany przez użytkownika, gdy użytkownik próbuje dodać lub zmienić dane w tabeli
SalesPersonQuotaHistory
. Wykonaj instrukcję ALTER TRIGGER, aby zmodyfikować wyzwalacz tak, aby był uruchamiany tylko na działaniachINSERT
. Ten wyzwalacz jest przydatny, ponieważ przypomina użytkownikowi, że przy aktualizacji lub wstawianiu wierszy do tej tabeli należy także powiadomić działCompensation
.Utwórz wyzwalacz.
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
Zmień wyzwalacz.
USE AdventureWorks2022; GO ALTER TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory AFTER INSERT AS RAISERROR ('Notify Compensation', 16, 10); GO
Zmień nazwę wyzwalacza za pomocą DROP TRIGGER i CREATE TRIGGER
Połącz się z silnikiem bazy danych.
Na pasku standardowym wybierz pozycję Nowe zapytanie.
Skopiuj poniższy przykład i wklej go w oknie zapytania, a następnie wybierz pozycję Wykonaj. W tym przykładzie użyto instrukcji DROP TRIGGER i CREATE TRIGGER, aby zmienić nazwę wyzwalacza
Sales.bonus_reminder
naSales.bonus_reminder_2
.
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_2
ON Sales.SalesPersonQuotaHistory WITH ENCRYPTION
AFTER INSERT, UPDATE
AS RAISERROR ('Notify Compensation', 16, 10);
GO
Powiązana zawartość
- CREATE TRIGGER (Transact-SQL)
- WYZWALACZ DROP (Transact-SQL)
- WŁĄCZ WYZWALACZ (Transact-SQL)
- WYŁĄCZ WYZWALACZ (Transact-SQL)
- EVENTDATA (Transact-SQL)
- sp_rename (Transact-SQL)
- ALTER TRIGGER (Transact-SQL)
- Uzyskaj 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.server_trigger_events (Transact-SQL)
- sys.server_sql_modules (Transact-SQL)
- sys.server_assembly_modules (Transact-SQL)