I am trying to write a trigger, but nothing is getting updated. The insert portion works fine. Any advice is greatly appreciated. Thanks in advance.
SQL:
DROP TABLE IF EXISTS `collectionsmax`.`payments_timestamp`;
CREATE TABLE `collectionsmax`.`payments_timestamp` (
`PaymentsID` int(10) unsigned NOT NULL,
`PaymentAmount` decimal(10) unsigned NOT NULL,
`LastUpdated` datetime NOT NULL,
`AssignedTo` varchar(200) NOT NULL,
`ActionType` varchar(45) NOT NULL,
`PaymentDate` varchar(25) NOT NULL,
`EnteredBy` varchar(200) NOT NULL,
`ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`FileNumber` varchar(200) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=175761 DEFAULT CHARSET=latin1;
DELIMITER $$
USE `collectionsmax`$$
DROP TRIGGER /*!50032 IF EXISTS */ `InsertPaymentTimestamp`$$
CREATE
/*!50017 DEFINER = 'root'@'localhost' */
TRIGGER `InsertPaymentTimestamp` AFTER INSERT ON `payments`
FOR EACH ROW BEGIN
INSERT INTO collectionsmax.payments_timestamp (PaymentsID, PaymentAmount,AssignedTo, ActionType, LastUpdated, PaymentDate, EnteredBy,FileNumber)
VALUES(NEW.ID,NEW.PaymentAmount, NEW.AssignedTo,New.PaymentStatus,NOW(),New.PaymentDateFormat,Left(USER(),LOCATE('@',USER())-1),New.FileNumber);
END;
$$
DELIMITER ;
DELIMITER $$
USE `collectionsmax`$$
DELIMITER $$
USE `collectionsmax`$$
DROP TRIGGER /*!50032 IF EXISTS */ `UpdatePaymentTimestamp`$$
CREATE
/*!50017 DEFINER = 'root'@'localhost' */
TRIGGER `UpdatePaymentTimestamp` BEFORE UPDATE ON `payments`
FOR EACH ROW BEGIN
UPDATE collectionsmax.payments_timestamp
SET ActionType = NEW.PaymentStatus, PaymentAmount = NEW.PaymentAmount, LastUpdated = NOW(), PaymentDate = NEW.PaymentDateFormat
WHERE PaymentsID = OLD.ID AND FileNumber = OLD.FileNumber AND PaymentDate = OLD.PaymentDateFormat AND ActionType = OLD.PaymentStatus
and PaymentAmount = OLD.PaymentAmount;
END;
$$
DELIMITER ;