MYSQL从另一个表插入值 - 触发器

时间:2014-03-28 09:33:23

标签: mysql triggers

我的数据库中有这些表:

enter image description here

我想添加registod和alarmes表一个idRegisto。

警报表由触发器自动填充。我想通过一个带有表记录值的触发器自动连接两个表和表警报填充的idRegistos。

有人可以帮助我吗? 我希望我已经很好地解释了我的疑虑

谢谢

enter image description here

填充表格警报的我的触发器

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  ;

1 个答案:

答案 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;