Jersson Garzon ST Parcial Triggers
Jersson Garzon ST Parcial Triggers
Jersson Garzon ST Parcial Triggers
Ingeniería de Sistemas.
Universidad Minuto de Dios.
Ing. Segundo Fidel Puerto Garavito.
Sistemas Transaccionales.
USE ejemplo;
nombre varchar(40),
edad int,
);
cuando datetime,
tipo varchar(2)
);
c. Crear un trigger para que se añada un dato en la segunda tabla cada vez que
insertemos en la primera. El trigger saltará con un AFTER INSERT, los datos que
introduzcamos serán: el código de la persona, la fecha actual y la letra "i" para
indicar que el cambio ha sido la inserción de un dato nuevo. Cada vez que
insertemos datos, debemos realizar una consulta para que nos muestre los datos
insertados.
DELIMITER %%
BEGIN
END%%
d. Crear un trigger que cuente los registros de la tabla employees y mantenga ese
numero actualizado en una tabla llamada cuenta, este trigger actuara después de
una instrucción insert o delete ejemplo si se introduce un registro nuevo en la tabla
aumentará en uno el contador, si se elimina un registro se disminuirá en uno el
contador.
CREATE table IF NOT EXISTS empleados(
edad int, );
direccion varchar(40),
);
DELIMITER %%
begin
end %%
DELIMITER %%
begin
end %%
e. Crear un trigger que cada vez que se inserte un producto, en la tabla productos,
este vaya contando en otra tabla el número de productos insertados y otro trigger
para que cada vez que se elimine vaya descontando.
);
DELIMITER %%
begin
end %%
DELIMITER %%
begin
end %%
f. Crear un trigger que cada vez que se elimine almacene la información del
producto, ver ejercicio e, en otra tabla con la fecha y la hora de la eliminación.
DELIMITER //
begin
end;
g. Compra y venta Cree una tabla llamada productos(puede utilizar la tabla del
caso e) Cree una tabla ventas (codventa, codigodelproducto,fecha, valorunitario,
cantidad) Cree una tabla compras (codcompra, codigodelproducto, fecha,
valorunitario, cantidad). Cree un trigger que cada vez que se inserte una compra
actualice (aumente) la cantidad en la tabla producto. Cree un trigger que cada vez
que se inserte una venta actualice (disminuya) la cantidad en la tabla producto.
DELIMITER %%
begin
end;
DELIMITER %%
begin
end;
h. Auditoria.
DELIMITER //
//
DELIMITER //
//
a. Cree una tabla clientes con los siguientes campos (documento, nombre,
apellido, saldo).
DELIMITER %%
begin
end%%
e. Cree un trigger que antes de insertar un pago disminuya el saldo del cliente.
DELIMITER $$
create trigger disminuir_saldo
before insert on pagos
for each row
begin
UPDATE cliente set saldo = saldo - new.valor where documento =
new.id_cliente;
end
$$
f. Cree una trigger que cada vez que se inserte, se actualice o elimine en
cualquiera de las tres tablas, guarde información en una tabla que se llame auditoria
con los siguientes campos(Evento,nombredetabla, código, fecha, hora) Evento:
inserción, actualización o eliminación Nombredelatabla: la tabla que será afectada
codigo: la llave primaria de lo que se está afectando. Fecha y hora: son tomados del
sistema.
• Credito.
DELIMITER //
create trigger insertar_credito
after insert on credito
for each row
INSERT INTO auditoria1 (nombretabla, evento, codigo, fecha) VALUES
('Credito', 'Inserta', codigo, curdate());
//
DELIMITER //
create trigger actua_credito
after update on credito
for each row
INSERT INTO auditoria1 (nombretabla, evento, codigo, fecha) VALUES
('Credito', 'actualizacion', codigo, curdate());
//
DELIMITER //
create trigger borrar_credito
after delete on credito
for each row
INSERT INTO auditoria1 (nombretabla, evento, codigo, fecha) VALUES
('Credito', 'Borrar', codigo, curdate());
//
• Cliente
DELIMITER //
INSERT INTO auditoria1 (nombretabla, evento, codigo, fecha) VALUES ('Cliente', 'Inserta',new.
id, curdate());
//
DELIMITER //
INSERT INTO auditoria1 (nombretabla, evento, codigo, fecha) VALUES ('Cliente', 'actualizacion',
old.id, curdate());
//
DELIMITER //
INSERT INTO auditoria1 (nombretabla, evento, codigo, fecha) VALUES ('Cliente', 'Borrar',
new.id, curdate());
//
• Pago
DELIMITER //
INSERT INTO auditoria1 (nombretabla, evento, codigo, fecha) VALUES ('Pago', 'Inserta', codigo,
curdate());
//
DELIMITER //
INSERT INTO auditoria1 (nombretabla, evento, codigo, fecha) VALUES ('pago', 'Borrar', codigo,
curdate());
//
DELIMITER //
INSERT INTO auditoria1 (nombretabla, evento, codigo, fecha) VALUES ('pago', 'actualizacion',
codigo, curdate());
//
Funciones
1. (20%) Cree una función que calcule el área de la casa teniendo en cuenta que es
el área en metros cuadrado de la casa.
DELIMITER $$
returns varchar(30)
begin
return area();
end $$
DELIMITER $$
returns varchar(30)
begin
return perimetro();
end $$
3. (20%) Cree una función que calcule el valor de la casa teniendo en cuenta que
recibe tres parámetros el largo, el ancho y el valor del metro cuadrado. El valor es el
área por el valor del metro cuadrado. (10%) Llame al método que calcula el área.
DELIMITER $$
returns varchar(30)
begin
return valor();
end$$
DELIMITER $$
RETURNS float
BEGIN
RETURN valort;
END$$
begin
IF pesopersona > 50 then
else
end if;
end$$
DELIMITER $$
begin
end $$
begin
end $$
delimiter $$
begin
end $$
El comportamiento común de un parámetro es como entrada, ésto quiere decir que recibirá
un dato almacenado en el parámetro enviado desde el contexto en el que se llama a la
función. Si deseamos indicar explícitamente que deseamos el parámetro como de entrada
debemos adicionar la palabra reservada IN a la declaración del parámetro de la función.
Los parámetros de salida permiten modificar el valor de una variable externa a la función
relacionada con el parámetro. De ésta manera si la función modifica el valor del parámetro,
la variable relacionada a éste parámetro tendrá el valor modificado inclusive después de
que la función haya terminado de ejecutarse.
En cada función o procedimiento que contenga parámetros de salida, éstos, son establecidos
con valores NULL al inicio de las funciones o procedimientos. ésto quiere decir que si
deseamos pasar un valor desde la variable externa relacionada al parámetro, éste valor, será
reemplazado con NULL antes de iniciar la función o procedimiento.
begin
define i int;
set i = 0;
while i<5 do
set i=i+1;
end while;
end$$