82 lines
2.1 KiB
SQL
82 lines
2.1 KiB
SQL
DROP TRIGGER IF EXISTS `vncontrol`.`ticketTracking_afterInsert`;
|
|
|
|
DELIMITER $$
|
|
CREATE DEFINER=`root`@`%` TRIGGER `vncontrol`.`ticketTracking_afterInsert`
|
|
AFTER INSERT ON `inter`
|
|
FOR EACH ROW
|
|
BEGIN
|
|
REPLACE vn.ticketLastState(ticketFk, ticketTrackingFk, name)
|
|
SELECT NEW.Id_Ticket, NEW.inter_id, `name`
|
|
FROM vn.state
|
|
WHERE id = NEW.state_id;
|
|
END$$
|
|
DELIMITER ;
|
|
|
|
|
|
DROP TRIGGER IF EXISTS `vncontrol`.`ticketTracking_afterUpdate`;
|
|
|
|
DELIMITER $$
|
|
CREATE DEFINER=`root`@`%` TRIGGER `vncontrol`.`ticketTracking_afterUpdate`
|
|
AFTER UPDATE ON `inter`
|
|
FOR EACH ROW
|
|
BEGIN
|
|
DECLARE vTicketFk INT;
|
|
DECLARE vTicketTrackingFk INT;
|
|
DECLARE vStateName VARCHAR(15);
|
|
|
|
IF NEW.state_id <> OLD.state_id THEN
|
|
REPLACE vn.ticketLastState(ticketFk, ticketTrackingFk, name)
|
|
SELECT NEW.Id_Ticket, NEW.inter_id, `name`
|
|
FROM vn.state
|
|
WHERE id = NEW.state_id;
|
|
END IF;
|
|
|
|
IF NEW.Id_Ticket <> OLD.Id_Ticket THEN
|
|
SELECT i.Id_Ticket, i.inter_id, s.`name`
|
|
INTO vTicketFk, vTicketTrackingFk, vStateName
|
|
FROM vncontrol.inter i
|
|
JOIN vn.state s ON i.state_id = s.id
|
|
WHERE Id_Ticket = NEW.Id_Ticket
|
|
ORDER BY odbc_date DESC
|
|
LIMIT 1;
|
|
|
|
IF vTicketFk > 0 THEN
|
|
REPLACE INTO vn.ticketLastState(ticketFk, ticketTrackingFk,name)
|
|
VALUES(vTicketFk, vTicketTrackingFk, vStateName);
|
|
END IF;
|
|
END IF;
|
|
END$$
|
|
DELIMITER ;
|
|
|
|
DROP TRIGGER IF EXISTS `vncontrol`.`ticketTracking_afterDelete`;
|
|
|
|
DELIMITER $$
|
|
CREATE DEFINER=`root`@`%` TRIGGER `vncontrol`.`ticketTracking_afterDelete`
|
|
AFTER DELETE ON `inter`
|
|
FOR EACH ROW
|
|
BEGIN
|
|
DECLARE vTicketFk INT;
|
|
DECLARE vTicketTrackingFk INT;
|
|
DECLARE vStateName VARCHAR(15);
|
|
|
|
DECLARE CONTINUE HANDLER FOR SQLSTATE '23000'
|
|
BEGIN
|
|
DELETE FROM vn.ticketLastState
|
|
WHERE ticketFk = OLD.Id_Ticket;
|
|
END;
|
|
|
|
SELECT i.Id_Ticket, i.inter_id, s.`name`
|
|
INTO vTicketFk, vTicketTrackingFk, vStateName
|
|
FROM vncontrol.inter i
|
|
JOIN vn.state s ON i.state_id = s.id
|
|
WHERE Id_Ticket = OLD.Id_Ticket
|
|
ORDER BY odbc_date DESC
|
|
LIMIT 1;
|
|
|
|
IF vTicketFk > 0 THEN
|
|
REPLACE INTO vn.ticketLastState(ticketFk, ticketTrackingFk,name)
|
|
VALUES(vTicketFk, vTicketTrackingFk, vStateName);
|
|
END IF;
|
|
END$$
|
|
DELIMITER ;
|