SQL - Duda con borrado de registros y fechas MySQL

 
Vista:
sin imagen de perfil
Val: 5
Ha aumentado su posición en 30 puestos en SQL (en relación al último mes)
Gráfica de SQL

Duda con borrado de registros y fechas MySQL

Publicado por Jose María (2 intervenciones) el 17/05/2020 15:27:02
El caso es que tengo un ejercicio en el que hay que borrar registros pero solo si son de un mes anterior a la fecha actual. ¿Como se podría eso?
Aqui el enunciado del ejercicio:
Usando la base de datos de la inmobiliaria, haz un trigger que cada vez que se elimine un movimiento, se recalcule la comisión del agente asociado al movimiento eliminado.
Tener en cuenta que solo se debe recalcular la comisión si el movimiento que se elimina es de una fecha de un mes anterior al actual, ya que la comisión se calcula el último día del mes.
Para recalcular la comisión, se ha de restar al importe de la comisión el 5% del total del precio del movimiento afectado.

Modelo Relacional:
ER_Inmoviliaria
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Duda con borrado de registros y fechas MySQL

Publicado por anonymous (43 intervenciones) el 17/05/2020 16:02:18
MySQL posee una amplia variedad de funciones que se pueden emplear para manipular fechas, una de las tantas formas de hacerlo es con:

DATE_SUB(NOW(),INTERVAL 30 DAY);

Donde Now() es la fecha de hoy, que puedes reemplazar por la fecha de tu movimiento si es del caso y le restas 30 dias como intervalo, lo haces en un trigger de tipo Before porque debes recalcular antes de borrar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 5
Ha aumentado su posición en 30 puestos en SQL (en relación al último mes)
Gráfica de SQL

Duda con borrado de registros y fechas MySQL

Publicado por Jose María (2 intervenciones) el 17/05/2020 16:06:00
Esa forma seria valida pero lo tengo que hacer con un Old supuestamente. EL codigo que tengo de momento es este:
1
2
3
4
5
6
7
DELIMITER $$
DROP TRIGGER IF EXISTS actualizar_comision $$
CREATE TRIGGER actualizar_comision BEFORE DELETE ON MOVIMIENTO FOR EACH ROW
	BEGIN
		UPDATE COMISION SET IMPORTE = IMPORTE - ((5/100)*IMPORTE);
END$$
DELIMITER ;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Francisco
Val: 150
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Duda con borrado de registros y fechas MySQL

Publicado por Francisco (62 intervenciones) el 18/05/2020 13:09:41
Hola

1) Se puede usar trigger AFTER si lo deseas, de hecho funcionaria para ambos casos.
2) Un IF que la vide efectivamente que el movimiento es del mes anterior.
3) Te falta agregar a cual agente se le re-calcula la comisión como lo tienes ahora lo calcula para todo el mundo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DROP TRIGGER IF EXISTS actualizar_comision;
 
DELIMITER $$
CREATE TRIGGER actualizar_comision
AFTER DELETE ON MOVIMIENTO
FOR EACH ROW
BEGIN
	IF OLD.FECHA_MOVIMIENTO <= DATE_SUB(NOW(),INTERVAL 1 MONTH)
		UPDATE COMISION
			SET IMPORTE = IMPORTE - (5/100)*IMPORTE
		WHERE AGENTE_DNI = OLD.AGENTE_DNI;
	END IF;
END
$$
DELIMITER ;

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar