Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使此触发器工作[SQL Oracle]_Sql_Oracle_Triggers - Fatal编程技术网

无法使此触发器工作[SQL Oracle]

无法使此触发器工作[SQL Oracle],sql,oracle,triggers,Sql,Oracle,Triggers,我有一个传感器表,如果1值>40进入Medicao表,它应该接收一个带有警报的字符串。有什么想法吗?因为你还没有说到底出了什么问题,我有点猜测,但我可以看到两个直接的潜在问题 通常情况下,您不应该再次查询同一个表,因为您可能会遇到变异表错误。子查询中也没有条件,因此可能会返回多行,并且子查询会返回多行错误 假设您执行该子查询是为了从受影响的行中获取ID值,因此请使用:NEW伪行: CREATE TRIGGER Alerta_Trig BEFORE INSERT OR UPDATE OF

我有一个传感器表,如果1值>40进入Medicao表,它应该接收一个带有警报的字符串。有什么想法吗?

因为你还没有说到底出了什么问题,我有点猜测,但我可以看到两个直接的潜在问题

通常情况下,您不应该再次查询同一个表,因为您可能会遇到变异表错误。子查询中也没有条件,因此可能会返回多行,并且子查询会返回多行错误

假设您执行该子查询是为了从受影响的行中获取ID值,因此请使用:NEW伪行:

CREATE TRIGGER Alerta_Trig
    BEFORE INSERT OR UPDATE OF Valor ON Medicao
    FOR EACH ROW
    WHEN (NEW.VALOR > 40)
    BEGIN
        UPDATE SENSOR
        SET ALERTA = 'Alerta laranja'
        WHERE SENSOR_ID=(SELECT SENSOR_SENSOR_ID FROM MEDICAO);
    END;

你有什么错误或错误行为?谢谢你的帮助,我遇到了问题:NEW.SENSOR\u SENSOR\u ID。我真的很感激!
CREATE TRIGGER Alerta_Trig
BEFORE INSERT OR UPDATE OF Valor ON Medicao
FOR EACH ROW
WHEN (NEW.VALOR > 40)
BEGIN
    UPDATE SENSOR
    SET ALERTA = 'Alerta laranja'
    WHERE SENSOR_ID = :NEW.SENSOR_SENSOR_ID;
END;