Al hacer un script SQL para crear un desencadenante en una tabla, quería comprobar que el desencadenador no existe antes de crearlo. De lo contrario, la secuencia de comandos no se puede ejecutar varias veces.SQL: ¿Por qué es necesario ir precedido de un CREATE TRIGGER GO
Así que agregué una declaración para verificar primero si el activador existe. Después de agregar esa declaración, la instrucción CREATE TRIGGER ya no funciona.
IF NOT EXISTS (SELECT name FROM sysobjects
WHERE name = 'tr_MyTable1_INSERT' AND type = 'TR')
BEGIN
CREATE TRIGGER tr_MyTable1_INSERT
ON MyTable1
AFTER INSERT
AS
BEGIN
...
END
END
GO
Esto da:
Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'TRIGGER'.
La solución sería dejar caer el gatillo existente y crear uno nuevo:
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'tr_MyTable1_INSERT' AND type = 'TR')
DROP TRIGGER tr_MyTable1_INSERT
GO
CREATE TRIGGER tr_MyTable1_INSERT
ON MyTable1
AFTER INSERT
AS
BEGIN
...
END
GO
Mi pregunta es: w hy es el primer ejemplo que falla? ¿Qué hay de malo en verificar que exista el disparador?
¿Caería presente el mismo problema que crear? – JeffO