MySQL:使用多个 if 语句触发

MySQL: Trigger with multiple if statements

我有一个 MySQL 触发器,它有条件地(使用 IF 语句)使用来自另一个 table 的三列之一的随机值更新两列。当我更改两个条件值之一时,两个随机列都会更新,而它应该只是一个。任何帮助都会很棒!

DBfiddle帮忙解释问题:https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=d2ad0a292678fb5ed39f6bc3e9c8ef11

如果新值不等于旧值,您应该添加条件:

 IF (NEW.selection2 <> OLD.selection2 AND NEW.selection2 = 'fruits') THEN
    SET NEW.selection2_random = ( SELECT fruits
      FROM lists
      ORDER BY RAND() LIMIT 1 );
 END IF;

虽然在 BEFORE UPDATE 触发器中,NEW 行引用更新前的所有值,这意味着对于 UPDATE SET 子句中未提及的那些列,NEW 行将包含旧值。