MySQL: 使用 where 子句更新触发器

MySQL: Update Trigger with where clause

我有两个 table,列表和用户。

我正在尝试创建一个触发器,用列表 table 中的值更新用户 table,其中列值匹配,但它不起作用。

我可以使用IF语句,但实际数据中有两种组合,所以我希望使用where子句。示例:其中 user1 = value1 和 user2 = value2 和 user3 = value 3。在真实数据中总是匹配。

这是一张图片,用于解释 user_output 列中的两个 table 以及所需的结果。 Dog是正确的,因为user1匹配value1,user2匹配value2,user3匹配value3。

这是我一直在尝试的触发器:

CREATE  TRIGGER trigger_1
            BEFORE UPDATE
            ON users
            FOR EACH ROW
        BEGIN
         IF (NEW.user1 <> OLD.user1 or new.user2 <> old.user2 or new.user <> old.user3 ) THEN
    SET NEW.user_output = ( SELECT value4
      FROM lists
    where users.user1 = lists.value1 and users.user2 = lists.value2 and users.user3 = lists.value3
LIMIT 1 );
end if;
END;

DB Fiddle: https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=d63fe3af02bd55fd2fe51cba1ba3c05d

CREATE TRIGGER trigger_1
BEFORE UPDATE
ON users
FOR EACH ROW
BEGIN
IF (NEW.user1 <> OLD.user1 or new.user2 <> old.user2 or new.user3 <> old.user3 ) THEN
    SET NEW.user_output = ( SELECT value4
                            FROM lists
                            where NEW.user1 = lists.value1 
                              and NEW.user2 = lists.value2
                              and NEW.user3 = lists.value3
                            LIMIT 1 );
end if;
END;

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=75629e35021ef5a62873cff46df1fa7b