¿Cuál es la diferencia entre un procedimiento almacenado y una función?
Enviado por karlo • 13 de Enero de 2018 • 769 Palabras (4 Páginas) • 393 Visitas
...
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.
...