我的触发器有点问题。 我创建了一个触发器:
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行”,我想解决这个问题。
任何人都可以帮助我吗?
亲切的问候
答案 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>