Solución:
Tu INSERT
La declaración siempre se ejecuta en una transacción, ya sea que haya definido una explícitamente o, de lo contrario, SQL Server usará una transacción implícita.
Está insertando una (o varias) filas en su tabla. Entonces, todavía dentro de la transacción, el AFTER INSERT
El disparador se ejecuta y verifica ciertas condiciones, por lo general utilizando el Inserted
pseudotabla disponible dentro del disparador, que contiene las filas que se han insertado.
Si llamas ROLLBACK TRANSACTION
en su disparador, entonces sí, su transacción, con todo lo que ha estado haciendo, es retrotraído y es como si eso INSERT
nunca sucedió: no aparece nada en la tabla de su base de datos.
También: FOR INSERT
es lo mismo que AFTER INSERT
en SQL Server: el disparador se ejecuta después los INSERT
declaración ha hecho su trabajo.
Una cosa a tener en cuenta (que muchos programadores se equivocan): el gatillo está disparado una vez por estado de cuenta – NO una vez por fila! Entonces, si inserta 20 filas a la vez, el gatillo se dispara una vez y el Inserted
La pseudo tabla dentro del disparador contiene 20 filas. Debe tener eso en cuenta al escribir el disparador: está no ¡Siempre lidiando con la inserción de una sola fila!