2013-09-11 52 views
1

我有一个包含多列20+的表格。我想在Update On上设置一个触发器,但如果更新了4列,我不会喜欢它。MySQL为选择列创建触发器

即:

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每一列。

回答

0

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

if ((NEW.ColumnA <> OLD.ColumnA AND NOT (NEW.ColumnA IS NULL and OLD.ColumnA IS NULL)) OR 
    . . . 
    ) 
+0

感谢,这工作,但现在我不得不进行性能调整,因为有这么多列 – user2766897