Sunteți pe pagina 1din 4

Administracin Base de Datos

CORPORACIN UNIVERSITARIA AMERICANA

TALLER: TRIGGERS Y STORED PROCEDURES

FEMNY JAVIER DIAZ JIMENEZ


(ADMINISTRACIN BASE DE DATOS)

EDGAR JOSU HERRERA URIBE VICTOR DANILO QUIROZ USUGA INGENIERIA DE SISTEMAS
(SEPTIMO SEMESTRE NOCTURNO)

BARRANQUILLA ABRIL 06 2013

Administracin Base de Datos


GENERE UN DOCUMENTO DE WORD DONDE CONTESTE LAS SIGUIENTES PREGUNTAS: 1. QU SON LOS TRIGGERS? Es un mecanismo muy ligado a los SP. Los triggers son conjuntos de sentencias SQL o SPs que son ejecutados automticamente antes o despus de una modificacin de la base de datos (UPDATE, INSERT, DELETE). Se usan para mantener condiciones sobre los datos de la base de datos y para monitorizar las operaciones. Hay que tener en cuenta que un trigger se ejecuta por cada modificacin, as que si las operaciones a realizar automticamente son muy complicadas, puede llevar a una ralentizacin considerable de nuestra aplicacin. Esto se puede dar particularmente cuando se hacen modificaciones a muchos registros al mismo tiempo, ya que se ejecutar un trigger por cada registro modificado.

2. QU DIFERENCIA TIENEN CON LOS STORE PROCEDURES? a) Usos de los Trigger: Para mejorar la administracin de las Base de Datos. Prevencin de errores de datos. Sincronizacin de las tablas. Modificacin de los datos en las vistas de la base de datos. b) Usos de los Stored Procedure: Son utilizados para realizar consultas SQL sobre los objetos del banco de datos de una manera abstracta. Agrupar en forma exclusiva parte de algo especfico que se desee realizar. Validacin de datos, integrados dentro de la estructura del banco de datos. c) Diferencias entre Trigger y Stored Procedure La principal diferencia es que los Triggers en realidad son Stored procedure. La velocidad en responder a las peticiones de usuarios es mayor en los Stored Procedure que en los Trigger. Los trigger son pequeos fragmentos de cdigo y los Stored procedure pueden encapsular procesos grandes y complejos.

Administracin Base de Datos


3. QU USO PRCTICO TIENEN LOS TRIGGERS? DE TRES EJEMPLOS. Son usados para mejorar la administracin de la Base de datos, sin necesidad de contar con que el usuario ejecute la sentencia de SQL. Adems, pueden generar valores de columnas, previene errores de datos, sincroniza tablas, modifica valores de una vista, etc. Permite implementar programas basados en paradigma lgico (sistemas expertos, deduccin).
--CREANDO LA BASE DE DATOS CREATE DATABASE EJERTRIGGER GO --USO USE EJERTRIGGER GO --CREANDO LA TABLA PRODUCTOS CREATE TABLE PRODUCTOS (ID_PRODUCTO CHAR(8) PRIMARY KEY NOT NULL, NOMBREPRODUCTO VARCHAR(25)NOT NULL, EXISTENCIA INT NULL, PRECIO DECIMAL(10,2)NOT NULL, PRECIOVENTA DECIMAL (10,2)) GO --CREANDO LA TABLA PEDIDO CREATE TABLE PEDIDO (ID_PEDIDO INT IDENTITY, ID_PRODUCTO CHAR(8) NOT NULL, CANTIDAD_PEDIDO INT CONSTRAINT PK_ID_PRODUCTO FOREIGN KEY(ID_PRODUCTO) REFERENCES PRODUCTOS(ID_PRODUCTO)) GO --CREANDO LA TABLA HISTORIAL CREATE TABLE HISTORIAL (ID_PRODUCTO CHAR(8) PRIMARY KEY NOT NULL, NOMBREPRODUCTO VARCHAR(25)NOT NULL, EXISTENCIA INT NULL, PRECIO DECIMAL(10,2)NOT NULL, PRECIOVENTA DECIMAL (10,2)) GO --CREANDO LA TABLA HISTORIALPRODUCTOS CREATE TABLE HISTORIALPRODUCTOS (NOMBRE VARCHAR(100), PRECIOVENTA FLOAT, USUARIO VARCHAR(100), FECHA SMALLDATETIME, ESTADO CHAR(1)) GO CREATE TRIGGER TRG_PRODUCTOS_INSER ON PRODUCTOS FOR INSERT AS BEGIN INSERT INTO HISTORIAL SELECT*FROM INSERTED END GO CREATE TRIGGER TRG_PRODUCTOS_OK ON PRODUCTOS FOR INSERT AS DECLARE @NOM VARCHAR(100) DECLARE @PRE FLOAT SELECT @NOM=NOMBREPRODUCTO, @PRE=PRECIO FROM INSERTED INSERT INTO HISTORIALPRODUCTOS VALUES(@NOM,@PRE,SUSER_NAME(),GETDATE(),'I')

Administracin Base de Datos


GO --TRIGGER QUE ACTUALIZA EL PRODUCTO SEGUN EL PEDIDO CREATE TRIGGER TRG_PEDIDO_ARTICULOS_OK ON PEDIDO FOR INSERT AS UPDATE PRODUCTOS SET EXISTENCIA =EXISTENCIA (SELECT CANTIDAD_PEDIDO FROMINSERTED ) WHERE ID_PRODUCTO=(SELECT ID_PRODUCTO FROM INSERTED) GO --INSERTANDO REGISTROS A LA TABLA PRODUCTOS INSERT INTO PRODUCTOS VALUES('P001','PANTALLA',5,10,12.5) INSERT INTO PRODUCTOS VALUES('P002','PARLATES',7,10,11.5) GO --ACTUALIZANDO EL REGISTRO SEGUN EL PEDIDO INSERT INTO PEDIDO VALUES('P002',5) GO --VISUALIZAR SELECT * FROM PRODUCTOS SELECT * FROM HISTORIAL SELECT * FROM HISTORIALPRODUCTOS SELECT*FROM PEDIDO

4. CUL ES LA SINTAXIS PARA CREAR LOS TRIGGERS EN MySQL? SINTAXIS: CREATE [DEFINER = {usuario | CURRENT_USER}] TRIGGER nombre_trigger tiempo_trigger evento_trigger ON nombre_tabla FOR EACH ROW sentencia_trigger Otra sintaxis seria: CREATE TRIGGER nombre_disp momento_disp evento_disp ON nombre tabla FOR EACH ROW sentencia_disp

5. CUL ES LA FUNCIN DE LAS PALABRAS RESERVADAS NEW Y OLD EN TRIGGERS DE MySQL? Los triggers tienen dos palabras clave, OLD y NEW que se refieren a los valores que tienen las columnas antes y despus de la modificacin. Los INSERT permiten NEW, los DELETE slo OLD y los UPDATE ambas. Un ejemplo de trigger sera uno asociado a la sentencia DELETE en una tabla de clientes, para impedir que se elimine uno que tenga un saldo distinto de cero. Otro trigger seria guardar los datos que se modifican de un cliente en otra base de datos que servira de auditora.

S-ar putea să vă placă și