我的触发器有点问题。 我创建了一个触发器:
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 程序时,我得到“找到 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 使用默认值,然后在需要时运行一个过程来更新它,然后你的触发器将在非空字段上更新后执行?
关于MySQL 触发器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12363888/