0% encontró este documento útil (0 votos)
120 vistas2 páginas

Trigger en SQL Server

Un trigger es un procedimiento almacenado que se ejecuta automáticamente cuando se intenta modificar los datos de una tabla, con el fin de mantener la integridad y coherencia de datos entre tablas. Los triggers se asocian a eventos específicos como inserción, actualización o eliminación de datos, y se ejecutan después de que ocurre el evento.

Cargado por

Antonio Cornejo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
120 vistas2 páginas

Trigger en SQL Server

Un trigger es un procedimiento almacenado que se ejecuta automáticamente cuando se intenta modificar los datos de una tabla, con el fin de mantener la integridad y coherencia de datos entre tablas. Los triggers se asocian a eventos específicos como inserción, actualización o eliminación de datos, y se ejecutan después de que ocurre el evento.

Cargado por

Antonio Cornejo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

TRIGGERS (DISPARADORES)

Un "trigger" (disparador o desencadenador) es un tipo de procedimiento almacenado que se ejecuta cuando se


intenta modificar los datos de una tabla (o vista).

Está definido para una tabla o vista específica y se crea para conservar la integridad referencial y la coherencia
entre distintas tablas.

Un trigger se asocia a un evento (inserción, actualización o borrado) sobre una tabla. Si se intenta modificar
datos de una tabla en la que se definió un trigger para alguna de estas acciones (inserción, actualización y
eliminación), el trigger se ejecuta (se dispara) en forma automática.

La diferencia con los procedimientos almacenados del sistema es que los triggers:

• No pueden ser invocados directamente; al intentar modificar los datos de una tabla para la que se ha
definido un disparador, el disparador se ejecuta automáticamente.
• No reciben y retornan parámetros.
• Son apropiados para mantener la integridad de los datos, no para obtener resultados de consultas.

Una tabla puede contener varios trigger para un mismo evento y un trigger puede activarse para varios eventos.
Los disparadores se ejecutan después de la ejecución de una instrucción "insert", "update" o "delete" en la tabla
en la que fueron definidos. Las restricciones se comprueban antes de la ejecución de la instrucción. Por lo tanto,
las restricciones se comprueban primero, si se infringe alguna restricción, el desencadenador no llega a
ejecutarse.

Para crear un Trigger debemos emplear la sentencia: CREATE TRIGGER

1. CREATE TRIGGER <nombre_trigger>


2. ON <nombre_tabla>
3. FOR <evento (INSERT, UPDATE o DELETE)>
4. AS
5. <Sentencias del trigger>

Para modificar un Trigger debemos emplear la sentencia ALTER TRIGGER

1. ALTER TRIGGER <nombre_trigger>


2. ON <nombre_tabla>
3. FOR <evento (INSERT, UPDATE o DELETE)>
4. AS
5. -Sentencias del procedimiento

Para eliminar un Trigger debemos emplear la sentencia: DROP TRIGGER <nombre_trigger>

Ejemplo

El siguiente ejemplo muestra un Trigger denominado tr_addDetalle_pedido que se activa al insertar datos dentro
de la tabla “DETALLE_PEDIDO”, realizando cambios en la tabla “PEDIDOS”.

1. CREATE TRIGGER tr_addDetalle_pedido


2. ON DETALLE_PEDIDO
3. FOR INSERT
4. AS
5. DECLARE @importe float, @precio float, @cantidad int
6.
7. SELECT @cantidad = cantidad FROM inserted
8. SELECT @precio = precio_uni
9. FROM ARTICULOS
10. INNER JOIN inserted
11. ON ARTICULOS.id_articulo=inserted.id_articulo
12. WHERE ARTICULOS.id_articulo= inserted.id_articulo
13.
14. SELECT @importe = @cantidad*@precio
15.
16. IF (@importe>0)
17. UPDATE PEDIDOS SET
18. total_importe = total_importe+@importe
19. FROM PEDIDOS
20. INNER JOIN inserted
21. ON inserted.id_pedido = PEDIDOS.id_pedido
22. WHERE PEDIDOS.id_pedido = inserted.id_pedido
23. ELSE
24. BEGIN
25. RAISERROR('error',16,1)
26. ROLLBACK TRANSACTION
27. END;

El trigger se ejecuta automáticamente al insertar datos dentro de la tabla de DETALLE_PEDIDO.

EJERCICIOS PRÁCTICOS

1. Utilizando la base de datos PEDIDOS crear un trigger que al insertar un registro nuevo en la tabla
DETALLE_PEDIDO descuente el valor del campo cantidad al campo existencia de la tabla ARTICULO.

2. Crear un trigger que al insertar un registro nuevo en la tabla DETALLE_PEDIDO, verifique si hay
existencia suficiente. Si no, eliminar el registro insertado y enviar un mensaje.

3. Crear un trigger que cuando elimine un registro en la tabla DETALLE_PEDIDO aumente el campo
cantidad del campo existencia en la tabla de PRODUCTOS

También podría gustarte