2013-12-21 108 views
1
DELIMITER // 
CREATE TRIGGER never_update_with_null 
BEFORE UPDATE 
ON `table_name` 
FOR EACH ROW 
BEGIN 
    IF OLD.name IS NOT NULL AND NEW.name IS NULL THEN 
     SET NEW.name = OLD.name; 
    IF OLD.phone IS NOT NULL AND NEW.name IS NULL THEN 
     SET NEW.phone = OLD.phone; 
    IF OLD.place IS NOT NULL AND NEW.place IS NULL THEN 
     SET NEW.place = OLD.place; 
END; // 
DELIMITER ; 

我努力实现以下目标: 如果有人UPDATE SA值name,在表table_namephoneplace(列),并将其值(更新值)NULL那么该值保持旧的(不会更新)。 也许有点短:从不用NULL更新。的MySQL创建触发器语法

上述SQL不会创建触发器,但它不会引发任何错误(phpMyAdmin)。它缺少语法吗?每OLD.column;之后已经尝试过ENDIF; - 没有任何改进。谢谢你的解释。

+1

尝试结束。如果不是ENDIF – Mihai

回答

3

尝试

DELIMITER // 
CREATE TRIGGER never_update_with_null 
BEFORE UPDATE 
ON `table_name` 
FOR EACH ROW 
BEGIN 
    IF OLD.name IS NOT NULL AND NEW.name IS NULL THEN 
     SET NEW.name = OLD.name; 
    END IF; 
    IF OLD.phone IS NOT NULL AND NEW.phone IS NULL THEN 
     SET NEW.phone = OLD.phone; 
    END IF; 
    IF OLD.place IS NOT NULL AND NEW.place IS NULL THEN 
     SET NEW.place = OLD.place; 
    END IF; 
END; // 
DELIMITER ; 
+0

对不起不一致,固定它。见问题。 TY – Thommy