sql >> Base de Datos >  >> RDS >> Sqlserver

SQL Server - Después de insertar/Para insertar - Retroceder

Su INSERT La declaración siempre se ejecuta en una transacción; ya sea que haya definido una explícitamente o, si no, entonces SQL Server usará una transacción implícita.

Está insertando una (o varias) filas en su tabla. Luego, aún dentro de la transacción, AFTER INSERT el disparador se ejecuta y verifica ciertas condiciones, generalmente usando el Inserted pseudo tabla disponible dentro del activador, que contiene las filas que se han insertado.

Si llama a ROLLBACK TRANSACTION en su activador, entonces sí:su transacción, con todo lo que ha estado haciendo, se revierte 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 activador se ejecuta después el INSERT declaración ha hecho su trabajo.

Una cosa a tener en cuenta (que muchos programadores se equivocan):el disparador se dispara una vez por declaración - NO una vez por fila! Entonces, si inserta 20 filas a la vez, el disparador se dispara una vez y el Inserted la pseudo tabla dentro del activador contiene 20 filas. Debe tener eso en cuenta al escribir el disparador:no ¡siempre tratando con una sola fila insertada!