MySQL 触发器不起作用

标签 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 程序时,我得到“找到 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/

相关文章:

arrays - PostgreSQL 数组错误

MySQL触发器: copy auto_increment value to another column upon insert

MySQL约束/触发器来防止重复行?

mysql - 如何附加从 case 语句中获得的数据

php - PDO异常 “could not find driver”

mysql - 在 Aurora Serverless MySQL 5.6 中使用分隔符时出现语法错误

sql - 插入或更新时的 PostgreSQL 触发器

mysql - 删除具有外键约束的用户

mysql - 使用 MySQL 连接三个表

mysql - 无法在mysql中创建触发器