Compartir a través de


Modificar o cambiar el nombre de desencadenadores DML

En este tema se describe cómo modificar o cambiar el nombre de un desencadenador DML en SQL Server 2014 mediante SQL Server Management Studio o Transact-SQL.

En este tema

Antes de empezar

Limitaciones y restricciones

  • 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 de los identificadores.

Recomendaciones

  • Se recomienda no 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. Cambiar el nombre de un desencadenador no cambia el nombre del nombre de objeto correspondiente en la columna de definición de la vista de catálogo sys.sql_modules . Se recomienda quitar y volver a crear el desencadenador en su lugar.

  • Si cambia el nombre de un objeto al que hace referencia un desencadenador DML, debe modificar el desencadenador para que su texto refleje el nuevo nombre. Por lo tanto, antes de cambiar el nombre de un objeto, muestre primero las dependencias del objeto para determinar si los desencadenadores se ven afectados por el cambio propuesto.

  • Un desencadenador DML también se puede modificar para cifrar su definición.

  • Para ver las dependencias de un desencadenador, puede usar SQL Server Management Studio o las siguientes vistas de función y catálogo:

Seguridad

Permisos

Para modificar un desencadenador DML, es necesario el permiso ALTER en la tabla o vista en la que se define el desencadenador.

Uso de SQL Server Management Studio

Para modificar un desencadenador DML

  1. En el Explorador de objetos, conéctese a una instancia del motor de base de datos y expanda esa instancia.

  2. Expanda la base de datos que desee, expanda Tablas y, a continuación, expanda la tabla que contiene el desencadenador que desea modificar.

  3. Expanda Desencadenadores, haga clic con el botón derecho en el desencadenador que desea modificar y, a continuación, haga clic en Modificar.

  4. Modifique el desencadenador y, a continuación, haga clic en Ejecutar.

Para cambiar el nombre de un desencadenador DML

  1. Elimine el desencadenador al que desea cambiar el nombre.

  2. Vuelva a crear el desencadenador y especifique el nuevo nombre.

Uso de Transact-SQL

Para modificar un desencadenador mediante ALTER TRIGGER

  1. Conéctese al motor de base de datos.

  2. En la barra Estándar, haga clic en Nueva consulta.

  3. Copie y pegue los ejemplos siguientes en la consulta. Ejecute el primer ejemplo para crear un desencadenador DML que imprima un mensaje definido por el usuario al cliente cuando un usuario intenta agregar o cambiar datos en la SalesPersonQuotaHistory tabla. Ejecute la instrucción ALTER TRIGGER para modificar el desencadenador para que se active solo en INSERT las actividades. Este desencadenador es útil porque recuerda al usuario que actualiza o inserta filas en esta tabla para notificar también al Compensation departamento.

USE AdventureWorks2012;  
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  
  
USE AdventureWorks2012;  
GO  
ALTER TRIGGER Sales.bonus_reminder  
ON Sales.SalesPersonQuotaHistory  
AFTER INSERT  
AS RAISERROR ('Notify Compensation', 16, 10);  
GO  
  

Para cambiar el nombre de un desencadenador mediante DROP TRIGGER y ALTER TRIGGER

  1. Conéctese al motor de base de datos.

  2. En la barra Estándar, haga clic en Nueva consulta.

  3. Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar. En este ejemplo se usan las instrucciones DROP TRIGGER y ALTER TRIGGER para cambiar el nombre del Sales.bonus_reminder desencadenador a Sales.bonus_reminder_2.

USE AdventureWorks2012;  
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  
  

Véase también

CREATE TRIGGER (Transact-SQL)
Desactivar el disparador (Transact-SQL)
ENABLE TRIGGER (Transact-SQL)
DISABLE TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL)
sp_rename (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
Obtener información sobre 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)