为什么我不能在两个表中使用触发器来保存第一个表中的数据?最好的方法是什么?

jv4diomz  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(151)

为了在一个表中保存一个数据,我创建了两个触发器,
当我在同一个表“enr”中有任何更改或任何新数据时,我正在尝试在表“enr”中保存一些消息。
我注意到我不能使用'enr'上的触发器来更新'enr'中的某些列,所以我创建了另一个名为'emailmessaging'的表来执行触发器以在那里保存数据,并在'emailmessaging'上的另一个触发器之后更新'enr'中的数据,所以我将避免在触发器状态中的同一个表中更新或添加新数据。
当我有新的数据时,我第一次触发'enr':

delimiter //

create trigger MessageMainEmail
after insert on ENR
for each row
begin
   DO SLEEP(1);
   insert into EmailMessaging(AssetNumber,MainMessage,Subject) values (New.Manufactor,concat('ENR has been changed! The Change occured in asset number: ',New.Manufactor,CHAR(13),'Thanks' ),concat(New.Manufactor,' Has been changed in ENR!'));
end //

delimiter ;

当我在enr中更新时,“enr”的第二个触发器:

delimiter //

create trigger MessageMainEmailUpd
before update on ENR
for each row
begin
   DO SLEEP(1);
   insert into EmailMessaging(AssetNumber,MainMessage,Subject,date) values (New.Manufactor,concat('ENR has been changed! The Change occured in asset number: ',New.Manufactor,CHAR(13),'Thanks' ),concat(New.Manufactor,' Has been changed in ENR!'),Now());
end //

delimiter ;

以及“emailmessaging”上的第三个触发器,用于更新enr中的数据:

delimiter //

create trigger MessageMainEmailToENR
after insert on EmailMessaging
for each row
begin
   DO SLEEP(3);
   update ENR set MainMessage=New.MainMessage,Subject=New.Subject,datedate=New.Date where Manufactor=New.AssetNumber ;
end //

delimiter ;

我用睡眠来确保触发器不会同时发生。
错误:
更新数据库时出错-无法更新存储函数/触发器中的表“enr”,因为调用此存储函数/触发器的语句已使用它。
我将感谢任何帮助修复这个或新的方式。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题