Modificar o cambiar el nombre de desencadenadores DML
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance
En este artículo se describe cómo modificar o cambiar el nombre de un desencadenador DML en SQL Server mediante SQL Server Management Studio o Transact-SQL.
Limitaciones
Al cambiar el nombre de un desencadenador, el desencadenador debe estar en la base de datos actual y el nuevo nombre debe seguir las reglas para los identificadores.
Recomendaciones
Evita usar el procedimiento almacenado sp_rename para cambiar el nombre de un desencadenador. Al cambiar cualquier parte del nombre de un objeto se pueden interrumpir scripts y procedimientos almacenados. Al cambiar el nombre de un desencadenador no se cambia el nombre del objeto correspondiente en la columna de definición de la vista de catálogo sys.sql_modules. En su lugar, se recomienda quitar y volver a crear el desencadenador.
Si cambia el nombre de un objeto al que hace referencia un desencadenador DML, deberá modificar este último para que el texto refleje el nuevo nombre. Por tanto, antes de cambiar el nombre de un objeto, consulta primero las dependencias del mismo para determinar si el cambio propuesto afecta a algún desencadenador.
También es posible modificar un desencadenador DML para cifrar su definición.
Para ver las dependencias de un desencadenador, puede usar SQL Server Management Studio o la función y las vistas de catálogo siguientes:
Permisos
Para modificar un desencadenador DML se requiere el permiso ALTER
en la tabla o vista en la que se define el desencadenador.
Uso de SQL Server Management Studio
Modificación de un desencadenador DML
En el Explorador de objetos, conéctese a una instancia del Motor de base de datos y, a continuación, expándala.
Expanda la base de datos que desee, expanda Tablasy, a continuación, expanda la tabla que contiene el desencadenador que desea modificar.
Expande Desencadenadores, haz clic con el botón derecho en el desencadenador que quieras cambiar y, luego, selecciona Modificar.
Modifica el desencadenador y, a continuación, selecciona Ejecutar.
Cambio de nombre de un desencadenador DML
- Elimina o deshabilita el desencadenador cuyo nombre deseas cambiar.
- Crea el nuevo desencadenador, especificando el nuevo nombre.
Uso de Transact-SQL
Modificación de un desencadenador mediante ALTER TRIGGER
Conéctese con el Motor de base de datos.
En la barra Estándar, seleccione Nueva consulta.
Copie y pegue el ejemplo siguiente en la consulta. Ejecute el primer ejemplo para crear un desencadenador DML que muestre al cliente un mensaje definido por el usuario cuando un usuario intente agregar o cambiar los datos de la tabla
SalesPersonQuotaHistory
. Ejecute la instrucción ALTER TRIGGER para modificar el desencadenador de manera que solo se active en las actividadesINSERT
. Este desencadenador es útil porque recuerda al usuario que actualiza o inserta filas en esta tabla que debe notificar también al departamentoCompensation
.Cree un desencadenador.
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
Modifica la alerta.
USE AdventureWorks2022; GO ALTER TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory AFTER INSERT AS RAISERROR ('Notify Compensation', 16, 10); GO
Cambio del nombre de un desencadenador mediante DROP TRIGGER y ALTER TRIGGER
Conéctese con el Motor de base de datos.
En la barra Estándar, seleccione Nueva consulta.
Copie y pegue el ejemplo siguiente en la ventana de consulta y seleccione Ejecutar. En este ejemplo se usan las instrucciones DROP TRIGGER y CREATE TRIGGER para cambiar el nombre del desencadenador
Sales.bonus_reminder
aSales.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
Contenido relacionado
- CREATE TRIGGER (Transact-SQL)
- DROP TRIGGER (Transact-SQL)
- ENABLE TRIGGER (Transact-SQL)
- DISABLE TRIGGER (Transact-SQL)
- EVENTDATA (Transact-SQL)
- sp_rename (Transact-SQL)
- ALTER TRIGGER (Transact-SQL)
- Obtener información acerca de los desencadenadores 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)