DELIMITER $$ CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_setProblemRequest`( vSelf INT ) BEGIN /** * Update the problems of tickets that have a pending ticketRequest or no longer have it * * @param vSelf Id ticket, if NULL ALL tickets */ CREATE OR REPLACE TEMPORARY TABLE tmp.ticket (INDEX(ticketFk, isProblemCalcNeeded)) ENGINE = MEMORY SELECT t.id ticketFk, FALSE hasProblem, ticket_isProblemCalcNeeded(t.id) isProblemCalcNeeded FROM ticket t WHERE t.shipped >= util.VN_CURDATE() AND (vSelf IS NULL OR t.id = vSelf); UPDATE tmp.ticket t JOIN ticketRequest tr ON tr.ticketFk = t.ticketFk SET t.hasProblem = TRUE WHERE tr.isOK IS NULL; CALL ticket_setProblem('hasTicketRequest'); DROP TEMPORARY TABLE tmp.ticket; END$$ DELIMITER ;