1

我有一张有很多列的表,20+。我想在 Update On 上设置一个触发器,但如果更新了 4 个列,我不希望它发生。

IE:

DELIMITER $$
CREATE TRIGGER triggerName
AFTER UPDATE ON tableName FOR EACH ROW
BEGIN
IF ((NEW.columnA <> OLD.columnA)||(NEW.columnB <> OLD.columnB)[...]||(NEW.columnV <> OLD.columnV)) THEN
        SET NEW.columnX = 'someValue', NEW.columnY = 'someOtherValue'
  END IF;
END $$
DELIMITER ;

是否有一个更简单/更优雅的解决方案,而不是包括除了我想在 IF 语句中忽略的 4 列之外的每一列。

4

1 回答 1

0

我不这么认为。但是,为了让您的生活更加复杂,请注意NULL价值观。也许它应该看起来更像:

if ((NEW.ColumnA <> OLD.ColumnA AND NOT (NEW.ColumnA IS NULL and OLD.ColumnA IS NULL)) OR
    . . .
   )
于 2013-09-11T03:14:00.953 回答