MySQL 触发检查行字段是否存在

MySQL Trigger Check if Row Field Exists

我在 table 上创建了一个触发器,如下所示:

delimiter //
CREATE TRIGGER tb_ins BEFORE UPDATE ON tb
FOR EACH ROW
BEGIN
    IF (NEW.size <> size) THEN

    END IF;
END;//

问题是,单独更新 size 以外的任何字段都会给我一个错误,提示找不到这样的字段。

例如:

UPDATE tb SET color = 'red' WHERE id = 1;

给我一个没有找到字段的错误,因为更新不包含触发器需要的 size 字段。

我需要知道是否有办法检查我的触发器函数中是否存在特定的 ROW 字段。如何实现?

我需要相当于:

IF EXISTS(ROW.size) THEN

END IF;

该错误与 UPDATE 语句中引用的列无关。

最大的问题是触发器主体中对 size 的不合格引用。如果目的是检测分配给 size 的值的变化,我们应该将 NEW.size 的值与 OLD.size.

进行比较
DELIMITER $$

DROP TRIGGER IF EXISTS tb_ins $$

CREATE TRIGGER tb_ins 
BEFORE UPDATE ON tb
FOR EACH ROW
BEGIN
   IF NOT (NEW.size <=> OLD.size) THEN
      -- value of size column has been modified
      BEGIN END;
   END IF;
END$$

THENEND IF 之间没有任何内容是无效的。我们必须在那里有一些东西。 MySQL 容忍一个空的 BEGIN END; 块,因此我们可以将其用作空操作。

不清楚您要实现的目标。