I have the following MySQL Trigger
SET @iUserId = OLD.LastChangedBy;
IF NOT NEW.LastChangedBy <=> OLD.LastChangedBy THEN
SET @iUserId = NEW.LastChangedBy;
END IF;
IF NOT NEW.BookingId<=> OLD.BookingId THEN
INSERT INTO AuditTrail VALUES (UUID(),@iUserId,'UPDATE','Booking', OLD.BookingId,'BookingType ',OLD.BookingType ,NEW.BookingType ,NOW());
END IF;
This is called as CREATE TRIGGER Booking_AUPD AFTER UPDATE ON Booking FOR EACH ROW
The problem I have is how can I get the OLD field value in a AFTER UPDATE trigger ?
解决方案
The most likely explanation for getting an error
"There is no OLD row in on INSERT trigger"
is that you are executing a statement that's creating an AFTER INSERT trigger, rather than creating an AFTER UPDATE trigger.
The reason that you can't reference OLD values from the row, as the row existed prior to the INSERT, is that the row did not exist prior to the INSERT.