Essays.club - Ensayos gratis, notas de cursos, notas de libros, tareas, monografías y trabajos de investigación
Buscar

¿Cuál es la diferencia entre un procedimiento almacenado y una función?

Enviado por   •  13 de Enero de 2018  •  769 Palabras (4 Páginas)  •  334 Visitas

Página 1 de 4

...

Esquema

Nombre de la variable

Tipo de dato y longitud

edadempleados

id

int(11)

edadempleados

name

varchar(50)

edadempleados

edad

int(11)

Ejemplifica dos tablas relacionadas y desarrolla los triggers de las operaciones INSERT, DELETE y UPDATE que realiza cambios en cascada sobre

INSERT

CREATE TRIGGER trigger_insert_cambio_cliente -- nombre del trigger

AFTER INSERT ON cliente -- usamos un after ya que lo que se quiere es despues de insertar

FOR EACH ROW INSERT INTO cambio_cliente(nombre_nuevo, seccion_nueva, usuario, f_d_modificacion, proceso, Id_Cliente) -- le pasamos los campos

VALUES (NEW.nombre, NEW.seccion, CURRENT_USER(), NOW(), 'proceso', NEW.id_cliente); -- como es insert acepta new

UPDATE

CREATE TRIGGER update_cambio_cliente -- nombre del trigger

BEFORE UPDATE ON cliente -- como es update debe de ser antes de hacer la actualizacion

FOR EACH ROW INSERT INTO cambio_cliente(nombre_anterior, seccion_anterior, nombre_nuevo, seccion_nueva, usuario, f_d_modificacion, proceso, Id_Cliente) -- campos de la tabla

VALUES (OLD.nombre, OLD.seccion, NEW.nombre, NEW.seccion, CURRENT_USER(), NOW(), 'Modificado', NEW.id_cliente) -- valores de la tabla

DELETE

CREATE TRIGGER Elimina_auditoria_clientes

AFTER DELETE ON cliente FOR EACH ROW INSERT INTO cambio_cliente(nombre_anterior, seccion_anterior, usuario, f_d_modificacion, proceso, Id_Cliente)

VALUES (OLD.nombre, OLD.seccion, CURRENT_USER(), NOW(), 'Eliminado', OLD.id_cliente)

---------------------------------------------------------------

Menciona tres ejemplos de operaciones que pueden ser implementadas por medio de transacciones. Desglosa a detalle cada operación.

Actualizar un nombre de la base de datos, por ejemplo:

BEGIN TRAN;

UPDATE cliente

SET NOMBRE = 'xxxxxxx'

WHERE ID= 1;

ROLLBACK;

En este caso se quiere hacer un cambio muy sencillo, pero imaginemos que es un proceso batch, ya no es tan sencillo y podría convenir meterlo en una transacción, para que cualquier error se haga un rollback y en caso de que sea correcto un commit;

START TRANSACTION;

SELECT @x := presup

FROM nomina_externa

WHERE id =1;

INSERT INTO nomina_interna( id, concepto, pres )

VALUES ( 1, ‘xxxxxxxxxxxxxx’, @x );

COMMIT;

En el ejemplo anterior insertamos el presupuesto externo en una nómina interna, como vemos está encerrado el presupuesto en una transacción, por motivos de seguridad, ya que lo manejamos es dinero y debe de haber mucho cuidado

Un ejemplo puede ser actualizar un registro. Aquí me gustaría mencionar como poner el autocommit en 0

Set autocommit = 0;

Begin;

Insert into banco (id,nombre) values(1,’banco dos’);

Commit;

Begin

Delete from banco where id = 1|

rollback;

En la segunda transacción no se borre porque aún no hay commit, con el rollback se regresa al estado original.

...

Descargar como  txt (5.9 Kb)   pdf (51.3 Kb)   docx (14.7 Kb)  
Leer 3 páginas más »
Disponible sólo en Essays.club