TECICON

Páginas: 5 (1050 palabras) Publicado: 4 de abril de 2013
ACTIVIDAD DE TRIGGERS
1 Identificar las palabras nuevas que hacen parte de las sintaxis de los triggers y defínalas
Triggers: un trigger es un bloque que se ejecuta implícitamente cuando ocurre un evento dentro de la base de datos. Estos permiten automatizar tareas y acciones en la base de datos, simplemente cuando se trabaje con una tabla.
Los triggers de base de datos se lanzanautomáticamente cuando se ejecuta una sentencia INSERT, UPDATE ó DELETE contra la tabla asociada al trigger..
Momento de Ejecución: es cuando se tiene que ejecutar el trigger con relación al evento. Puede ser antes (BEFORE) o después (AFTER). Este es el punto más importante en el momento de crear un trigger ¿Cuando debería dispararse?. ¿Antes o después de la sentencia en cuestión? Esto dependerá de loque vayamos a hacer en el cuerpo del trigger.
Evento: es la operación u operaciones que provocarán la ejecución del trigger ¿Cuáles son? Un INSERT, un UPDATE, un DELETE o incluso una combinación de ellas sobre una tabla. Dicha tabla es la que tendrá asociado el trigger. Cuando el evento es un UPDATE se puede incluir en la definición del trigger una lista de columnas que son las que puedenprovocar el disparo del mismo si se intentan actualizar. En el caso de un INSERT o un DELETE es evidente que no hay lista de columnas ya que afectan a registros enteros. El evento puede contener varias sentencias. De esta forma, podemos diferenciar qué parte del código del trigger ejecutar dependiendo de la sentencia que hace que se dispare (IF INSERTING THEN, IF DELETING THEN,...).
Tipo detrigger: esto determinará cuantas veces debe ejecutarse el cuerpo del trigger cuando ocurre el evento (ROW, STATEMENT).
Cláusula WHEN: especifica la restricción de un trigger. La condición se evalúa para cada registro para determinar si se ejecuta el cuerpo del trigger o no. Permitiendo de esta manera excluir algún registro afectado por la sentencia que disparó el trigger para que no se ejecuteel cuerpo del trigger para ese registro.
Cuerpo del trigger: es aquí donde se escribe el código PL/pgSQL del cuerpo del trigger. Se trata de escribir las acciónes a realizar. El cuerpo se define mediante un bloque, tal como se mencionó anteriormente. Es importante reseñar que dentro del cuerpo del trigger se tiene acceso a los valores nuevos y viejos del registro que se está procesando. Elcuerpo del trigger debe crearse
a partir de la estructura de PL/pgSQL, de lo contrario no funcionará el código.

2. Teniendo en cuenta el ejercicio anterior elabore un trigger que permita agregar a esa misma tabla auditoria una fila cuando se actualiza y se elimina un registro o conjunto de registros en la tabla movimientos.
--
-- Estructura de tabla para la tabla `auditoria`
CREATE TABLE IFNOT EXISTS `auditoria` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`usuario` varchar(50) DEFAULT NULL,
`fecha_move` date DEFAULT NULL,
`idmovi` int(10) DEFAULT NULL,
`accion` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- Volcar la base de datos para la tabla `auditoria`
- Estructura de tabla para la tabla `movimientos`CREATE TABLE IF NOT EXISTS `movimientos` (
`idmovimiento` int(10) NOT NULL,
`fecha` date DEFAULT NULL,
`valor` float DEFAULT NULL,
`concepto` varchar(50) DEFAULT NULL,
PRIMARY KEY (`idmovimiento`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
- Volcar la base de datos para la tabla `movimientos`
-- (Evento) desencadenante `movimientos`

DROP TRIGGER IF EXISTS `tg_auditoria`;DELIMITER //
CREATE TRIGGER `tg_auditoria` AFTER INSERT ON `movimientos`
FOR EACH ROW insert into auditoria(usuario,fecha_move,idmovi,accion)values(CURRENT_USER(),NOW(),NEW.idmovimiento,"agregar")

3. Observar el modelo
Elabore un trigger que permita actualizar la cantidad existente de productos (pro_cae) restando
los productos vendidos, cada vez que se anexa una fila a la tabla detalle. --...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS