salix/db/routines/vn/triggers/ticketTracking_afterUpdate.sql

33 lines
894 B
SQL

DELIMITER $$
CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketTracking_afterUpdate`
AFTER UPDATE ON `ticketTracking`
FOR EACH ROW
BEGIN
DECLARE vTicketFk INT;
DECLARE vTicketTrackingFk INT;
DECLARE vStateName VARCHAR(15);
IF NEW.stateFk <> OLD.stateFk THEN
REPLACE vn.ticketLastState(ticketFk, ticketTrackingFk, name)
SELECT NEW.ticketFk, NEW.id, `name`
FROM state
WHERE id = NEW.stateFk;
END IF;
IF NEW.ticketFk <> OLD.ticketFk THEN
SELECT i.ticketFk, i.id, s.`name`
INTO vTicketFk, vTicketTrackingFk, vStateName
FROM ticketTracking i
JOIN state s ON i.stateFk = s.id
WHERE ticketFk = NEW.ticketFk
ORDER BY created DESC
LIMIT 1;
IF vTicketFk > 0 THEN
REPLACE INTO ticketLastState(ticketFk, ticketTrackingFk,name)
VALUES(vTicketFk, vTicketTrackingFk, vStateName);
END IF;
END IF;
END$$
DELIMITER ;