2013-09-11 129 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