我的数据库中有这些表:
我想添加registod和alarmes表一个idRegisto。
警报表由触发器自动填充。我想通过一个带有表记录值的触发器自动连接两个表和表警报填充的idRegistos。
有人可以帮助我吗? 我希望我已经很好地解释了我的疑虑
谢谢
填充表格警报的我的触发器
DELIMITER $$
create TRIGGER alerta
BEFORE INSERT ON registos
FOR EACH ROW
begin
Set @comp=0;
Set @tempmax=0;
Set @tempmin=0;
Set @hummax=0;
Set @hummin=0;
Set @orvalho=0;
select lim_inf_temp, lim_sup_temp, lim_sup_humid, lim_inf_humid, lim_pt_orvalho into @tempmin, @tempmax, @hummax, @hummin, @orvalho from sensores where idSensor=NEW.idSensor;
Set @maxidAlarme=0;
if (CAST(NEW.Temperatura AS UNSIGNED)<@tempmin) then
SELECT MAX(idAlarme) into @maxidAlarme FROM alarmes;
SET @maxidAlarme=@maxidAlarme+1;
INSERT INTO alarmes(idAlarme,descricao_alarme) VALUES (@maxidAlarme,"ERROR");
end if;
end $$;
DELIMITER ;
答案 0 :(得分:1)
在闹钟表中,您是否要使用同一个新生成的
idRegisto
registos
表? - Ravinder是。这就是我要的。 - user3320956
在idRegisto
表中插入相同的新生成的alarm
字段值,
更改触发器主体的一部分如下:
if ( CAST( NEW.Temperatura AS UNSIGNED ) < @tempmin ) then
SELECT MAX( idAlarme ) into @maxidAlarme FROM alarmes;
SET @maxidAlarme := @maxidAlarme + 1;
SET @auto_idRegisto := ( SELECT AUTO_INCREMENT
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'registos'
AND TABLE_SCHEMA = DATABASE() );
INSERT INTO alarmes( idAlarme, descricao_alarme, idRegisto )
VALUES ( @maxidAlarme, "ERROR", @auto_idRegisto );
end if;