CREATE DEFINER=`eva3`@`%` TRIGGER `notas_before_update` BEFORE UPDATE ON `notas` FOR EACH ROW BEGIN
declare haycambios INT default 0;
DECLARE aviso TEXT DEFAULT "";
if (NEW.nota >10 OR NEW.nota<0) then
SET NEW.nota := OLD.nota;
END if;
if (NEW.nota <> OLD.nota) then
SET haycambios := 1;
SET aviso := CONCAT_WS(" ",aviso,"nota",OLD.nota,
"->",NEW.nota);
END if;
if haycambios=1 then
INSERT INTO logs VALUES(NULL,NOW(),aviso,USER());
END if;
END
CREATE DEFINER=`eva3`@`%` TRIGGER `notas_before_insert` BEFORE INSERT ON `notas` FOR EACH ROW BEGIN
SELECT nombre INTO @alu FROM alumnos
WHERE id = NEW.fk_alumno;
SELECT nombre INTO @modulo FROM modulos
WHERE id = NEW.fk_modulo;
if NEW.nota <0 then
SET NEW.nota=0;
ELSE
IF NEW.nota>10 then
SET NEW.nota=10;
END if;
END if;
INSERT INTO LOGS VALUES(NULL,NOW(),
CONCAT_WS(" ","insertada nota:",@alu,"-",
@modulo,"=",NEW.nota),USER());
END
CREATE DEFINER=`eva3`@`%` EVENT `generador_notas2`
ON SCHEDULE
EVERY 15 SECOND STARTS '2025-04-09 17:39:15'
ON COMPLETION NOT PRESERVE
ENABLE
COMMENT ''
DO BEGIN
DECLARE bingo INT;
DECLARE alu INT;
DECLARE modu INT;
DECLARE nota INT DEFAULT 0;
SET nota:= floor(RAND()*11);
-- SELECT COUNT(*) INTO modu FROM modulos;
SET modu:= (SELECT COUNT(*) FROM modulos);
SET bingo := floor(RAND()*modu);
SET @misql1 := CONCAT("select @idmodulo:=id from modulos ",
"LIMIT 1 offset ",bingo);
PREPARE stmt1 FROM @misql1;
EXECUTE stmt1;
deallocate PREPARE stmt1;
-- 2 parte
SET alu:= (SELECT COUNT(*) FROM alumnos);
SET bingo := floor(RAND()*alu);
SET @misql2 := CONCAT("select @idalu:=id from alumnos ",
"LIMIT 1 offset ",bingo);
PREPARE stmt2 FROM @misql2;
EXECUTE stmt2;
deallocate PREPARE stmt2;
INSERT ignore INTO notas VALUES (@idalu, @idmodulo, nota);
END