Моя проблема в том, что у меня хранится список учеников, и каждый ученик посещает школу в определенные дни недели. Я хочу создать триггер, который запускается в полночь, который проверяет, в какой день он только что стал, и, если студент посещает этот день, сделает новую запись в базе данных для каждого студента. У меня есть частично созданный с временем l oop, но я знаю, что это не лучшее решение. Одна большая проблема, связанная с этим, как и сейчас, заключается в том, что он будет рисовать все идентификаторы StudentId, а не один идентификатор из строки, которую он изучает в настоящее время. Есть три таблицы, которые будут доступны для студентов, расписания и ClassSession. Студенты и расписание уже созданы, и результатом будет несколько строк в ClassSession, содержащих StudentId и CurrentDate.
CREATE EVENT NewDailyTables
ON SCHEDULE
EVERY 1 DAY
STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY)
DO
CALL CreateDayTriggerWhile();
------------------------------------------------------------------------------------------------------
DELIMITER $$
CREATE PROCEDURE `cnp_data`.`CreateDayTriggerWhile` ()
BEGIN
SET @ThisEnd=0;
SET @Count=0;
SET @ThisId=0;
SELECT COUNT(*) FROM Schedule INTO @ThisEnd;
WHILE @Count<@ThisEnd DO
SELECT StudentId FROM Schedule INTO @ ThisId; /* takes all student id's. Unsure of how to write WHERE row=@count*/
CALL CreateDayTriggerHelp(@ThisId);
END WHILE;
END $$
------------------------------------------------------------------------------------------------------
DELIMITER $$
CREATE PROCEDURE `cnp_data`.`CreateDayTriggerHelp` (IN ThisId INT)
BEGIN
SET @DayName = DAYNAME(CURRENT_DATE);
IF (SELECT ThisId FROM Schedule WHERE @DayName=1)=true
THEN
INSERT INTO ClassSession (StudentId, CurrentDate)
VALUES (ThisId, CURRENT_DATE);
END IF;
END $$
-------------------------------------------------------------------------------------------------------
Спасибо за понимание!
Редактировать -
Вот так выглядит расписание
StudentId-Monday-Tuesday-Wednesday-Thursday-Friday-Saturday-Sunday
2374 - 0 - 1 - 0 - 1 - 0 - 0 - 0
В нем хранится крошечный знак / BOOL в дни, когда ученики появляются в классе. Я хочу, чтобы он работал, чтобы он проверял день, а затем проверял, должен ли ученик показывать этот день в классе, и создает новую запись в ClassSchedule, если это так