Problemario de triggers, procedures y ejercicios combinados a base de datos
usando SQL estndar con la siguiente base de datos que se proporcionara.
Procedimiento (procedure): Un conjunto de comandos que pueden almacenar en el servidor. Delimitador (delimiter): Signo o carcter que determina la finalizacin de una sentencia.
Crate procedure NOMBRE (in PARAMETRO1, tipo_dato (), PARMETRO tipo_dato ())
Begin La sintaxis BEGIN END se utiliza para escribir sentencias compuestas que pueden aparecer en el interior de procedimientos almacenados.
Insert into NOMBRE (ATRIBUTOS, ATROBUTOS) values (PARMETRO, PARAMETRO); End // termina una sentencia utilizada con el delimitador especificado.
CALL Se mandara a llamar el procedimiento. CALL NOMBRE_PROCEDIMIENTO ()//
Nombre del procedimiento Variables que se le asignaran a los parmetros de la tabla Se establecern eventos: INSERT, SELECT, DELETE, UPDATE, de acuerdo a lo que se requiera realizar. Se establecern las variables definidas en la fase 1 y se le enviaran a los atributos ya establecidos en la tabla
Fase 1 Fase 2 Fase 3 Ejemplo 1 1. Mostrar el ID de la tabla t
a) Se creara la tabla y se insertaran registros en la misma.
mysql>create table t (c1 int); Query OK, 0 rows affected (0.22 sec) mysql>insert into t (c1) values (4); Query OK, 0 rows affected (0.12 sec)
b) Se crea el procedimiento y se realizan las siguientes instrucciones.
SALIDA tabla resultado C1 4
Ejercicios: desarrolla cada una de las siguientes actividades. 1. Calcular la edad y el da de nacimiento con nombre, de los empleados mediante un procedimiento. 2. Realiza un procedimiento que consulte el id del estudiante, edad y el mes en el que naci y concatnalo con el nombre consulta1. 3. Realiza el siguiente procedimiento que muestre los siguientes resultados tomando en cuenta las siguientes funciones. (INSERT,SELECT).
Se mostraran todos los registros de la tabla cuando estn registrados.
TRIGGER (DISPARADORES) Un disparador es un objeto con nombre dentro de una base de datos el cual se asocia a una tabla y se activa cuando ocurre en esta un evento en particular.
Se usan las siguientes sentencias:
ELIMINAR..DELETE(after) MODIFICAR..UPDATE(AFTER) INSERTARINSERT(BEFORE,AFTER) Se puede activar: DESPUES.AFTER ANTESBEFORE
Crate trigger nombre_disparador before insert on nombre_tabla
For each row define lo que se ejecutara cada vez que el disparador se active, lo cual ocurre una vez para cada fila afectada por la sentencia activada. Las palabras clave OLD y NEW permite acceder a columnas especificas en los registros d los cuales estn siendo afectados por los disparadores
Insert into nombre_tabla values (.); En un disparador para INSERT, solamente puede utilizarse NEW. Nom_col, porque no hay una nueva versin anterior del registro. En un disparador para DELETE solo puede emplearse OLD. Nom_col porque no hay un nuevo registr. en un disparador para UPDATE se puede emplear OLD.nom_col para referirse a las columnas d un registro Fase 1 CREATE UN DISPARADOR
Nombre que se le da al disparador.
Se usa (before, after) para insertar antes o despus en dicha tabla
La siguiente instruccin (on) indica en que tabla se insertar
Fase 2 Fase 3 DROP TRIGGER NOMBRE_DEL TRIGGER;
1. 2. mysql> CREATE TRIGGER T1 BEFORE INSERT EMPLEADO 3. -> FOR EACH ROW 4. -> INSERT INTO empleado_r VALUES(new.id,new.nombre,new.apaterno,new.amaterno);