Pueden sonar similar, pero Tigger y Trigger distan mucho uno del otro. Aunque buscando similitudes, encontramos que ambos responden rápidamente ante estímulos exteriores.
Un trigger o desencadenador, es un objeto de la base de datos que se ejecuta o es desencadenado por un evento. Existen triggers DML (Data Manipulation Language) y DDL (Data Definition Language). En este artículo hablaremos de los Triggers DML.
Al hablar de DML, hablamos de eventos basados en la manipulación de datos, como lo que sucede cuando hacemos un INSERT, DELETE o UPDATE. La excelente funcionalidad que podemos encontrar en un trigger, es la capacidad de ejecutar scripts al suceder un evento en una tabla. Olvide mencionar que los triggers DML están atados a una tabla o vista.
CREATE TRIGGER trigger_name
ON table_name
AFTER INSERT
AS
BEGIN
SELECT B.Name + ' (' + C.FirstName + ' ' + C.LastName + ')' AS CreadoPor
FROM INSERTED A INNER JOIN [User] B ON (A.CreatedBy = B.UserId)
INNER JOIN Person C ON (B.PersonId=C.PersonId)
END
Como pueden ver en el ejemplo de código, se define un nombre para el trigger, luego se especifica la tabla sobre la cual va a actuar y se le especifica el evento. Hay dos tipos de eventos: AFTER (después) e INSTEAD OF (en vez de) y hay tres eventos INSERT (insertar), DELETE (borrar) y UPDATE (actualizar). Por lo tanto, podemos efectuar combinaciones dependiendo de nuestras necesidades como: AFTER INSERT, AFTER DELETE,INSTEAD OF INSERT, etc.
Ahora bien, si seguimos analizando el código, se puede observar que se está examinando la tabla INSERTED, la cual posee los registros que han sido insertados, es decir que no necesariamente posee la misma estructura de datos que la tabla principal. Por ejemplo, si se inserta un registro de 3 columnas en una tabla de 5 columnas, en INSERTED encontraremos solo las columnas insertadas. Esto no se puede apreciar muy bien cuando se crea un nuevo registro, sin embargo, es totalmente visible cuando hacemos una actualización. Verán que cuando se trata de un UPDATE, lo que realmente sucede es un DELETE y luego un INSERT, por lo que podemos sacar provecho de la tabla de INSERTED y la de DELETED. Como verán no existe una UPDATED.
Por lo tanto, al momento de trabajar con el evento de UPDATE, se puede trabajar con las tablas de DELETED e INSERTED simultáneamente, otorgando así, una capacidad increíble de Manipulación de Datos.
En un próximo post, conversaremos sobre los Trigger DDL. Gracias.