MySQL触发器不起作用

时间:2012-09-11 06:26:41

标签: mysql triggers

我的触发器有点问题。 我创建了一个触发器:

BEGIN 

IF((SELECT `Wert` 
    FROM parameter_history 
    WHERE `BusNr` = NEW.BusNr AND `MesswertNr` = NEW.MesswertNr 
    ORDER BY `Timestamp` DESC LIMIT 1) != NEW.Value) 


THEN 
    INSERT INTO parameter_history (`BusNr`, `MesswertNr`, `Value`) 
    VALUES (NEW.BusNr, NEW.MesswertNr, NEW.Value); 
END IF; 

END 

触发事件发生在更新之后。 如果已经有一个New.Value它真的很好用。 但是如果我的数据库中没有New.Value则它不起作用,我不知道为什么。 问题是,当我的表中实际上没有条目时,我无法从“NEW.Value”获得值。 使用MySQL-Programm,我找到了“0行”,我想解决这个问题。

任何人都可以帮助我吗?

亲切的问候

1 个答案:

答案 0 :(得分:0)

当然,如果你的陈述已经有了一个NEW.value,那么它是有效的,

    IF((select x) != NEW.Value)  // select x only when it does not equal 
//what the current value of New.Value is.

THEN  // preform my insert statement. 
    INSERT INTO parameter_history (`BusNr`, `MesswertNr`, `Value`) 
    VALUES (NEW.BusNr, NEW.MesswertNr, NEW.Value); 

END IF;

现在考虑New.Value不存在或为空(null)的情况,你正在运行,只有当它不等于时才选择x? 。

你将获得0行返回。

我不太确定你在构建什么,但为什么不使用New.Value的默认值然后运行一个程序来在需要时更新它,然后你的触发器会在非空字段上更新后执行? / p>