Вы можете значительно упростить это. То, что вы пытаетесь сделать, это эффективно этот запрос
UPDATE Table_Record
SET `Value` = NEW.`Value`
WHERE `Name` = NEW.`Name`
AND `Value` < NEW.`Value`;
Вы заинтересованы в обновлении строки в Table_Record
, где Name
= NEW.Name
. Вы хотите обновить, только если NEW.Value
больше, чем тот, который хранится в данный момент. Следовательно, вышеприведенное не будет обновляться, если ограничение этого значения не выполняется.
Этот триггерный код должен делать то, что вы пытаетесь достичь.
-- First of all, drop any other trigger with the same name
DROP TRIGGER IF EXISTS `Mytrigger`;
-- Create the new trigger
DELIMITER $$
CREATE TRIGGER `Mytrigger`
AFTER INSERT ON Table_Current
FOR EACH ROW
BEGIN
UPDATE Table_Record
SET `Value` = NEW.`Value`
WHERE `Name` = NEW.`Name`
AND `Value` < NEW.`Value`;
END $$
DELIMITER;