Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ndice
Componentes principales[editar]
La estructura bsica de un trigger es:
Tipos[editar]
Existen dos tipos de disparadores que se clasifican segn la cantidad de ejecuciones a
realizar:
Row Triggers (o Disparadores de fila): son aquellas que se ejecutaran cada vez que se
llama al disparador desde la tabla asociada al trigger
Statement Triggers (o Disparadores de secuencia): son aquellos que sin importar la
cantidad de veces que se cumpla con la condicin, su ejecucin es nica.
Pueden ser de sesin y almacenados; pero no son recomendables[cita requerida].
Efectos y caractersticas[editar]
No aceptan parmetros o argumentos (pero podran almacenar los datos afectados en
tablas temporales)
No pueden ejecutar las operaciones COMMIT o ROLLBACK porque estas son parte de la
sentencia SQL del disparador (nicamente a travs de transacciones autnomas)
Pueden causar errores de mutaciones en las tablas, si se han escrito de manera
deficiente.
Consideraciones Generales y Beneficios:
* No se pueden invocar por si mismos, se disparan automticamente
* No reciben ni retornan parmetros
* A diferencia de los constraint check pueden hacer referencia a otras tablas (por
ejemplo se puede controlar una insercin en una tabla de ventas si y solo si el valor de un
campo stock de una tabla artculos sea mayor a x cantidad)
* Se pueden crear ms de un trigger para un mismo evento en una tabla, con lo cual
se pueden controlar mltiples alternativas sobre la misma tabla.
* Permiten evaluar el estado de una tabla antes y despus de una modificacin y tomar
acciones acorde a la evaluacin
* Permiten customizar mensajes de error, algo que los constraints en general no
permiten.
Syntaxis:
CREATE TRIGGER <Nombre del Trigger>
ON <Nombre de la Tabla>
AFTER <INSERT,DELETE,UPDATE>
AS
BEGIN
SET NOCOUNT ON;
-- Inserta aqu las instrucciones
END
Consideraciones Adicionales:
- Los triggers DML utilizan dos tablas especiales denominadas Inserted y Deleted.
- Son tablas creadas automticamente por el SQL con la misma estructura que la tabla
sobre la cual est definido el trigger
- La tabla Inserted solo tiene datos en operaciones de Insert y Update
- La tabla Deleted slo tiene datos en operaciones de Delete y Update
- En caso de un update las tablas Inserted y Deleted tienen data al mismo tiempo.
- No se pueden modificar los datos de estas tablas