多个sql查询,它们通过触发器相互依赖

时间:2014-08-05 00:39:12

标签: mysql sql eventtrigger triggers

我有2个sql查询,我想使用触发器。但是,第二个依赖于第一个sql查询,它也会进行连接,这对我来说很复杂。 这是我的表:

id |FB_Followers|TW_Followers|sum_Fans|FB_Fan_Growth_Speed
1     2              4                      
2     6              5
3     4              8

这是我的代码:

USE `my_database`; 
DELIMITER $$ 
CREATE TRIGGER `followers_BINS` BEFORE INSERT ON `followers` FOR EACH ROW 
BEGIN  
   SET NEW.sum_fans = NEW.FB_Follower+NEW.TW_Followers;   
   update followers f left outer
   join followers f2
   on f2.id = f.id - 1
   set f.FB_Fan_Growth_Speed = f.FB_Followers / f2.FB_Followers; 
END

因此,第一个SQL查询非常简单。

SET NEW.sum_fans = NEW.FB_Follower+NEW.TW_Followers; 

第二个查询更复杂,我不确定我是否应该使用NEW。我基本上试图在它之前的行中划分新的行除以获得追随者的增加率。当不在触发器中使用时,此查询完全正常。

update followers f left outer
       join followers f2
       on f2.id = f.id - 1
       set f.FB_Fan_Growth_Speed = f.FB_Followers / f2.FB_Followers; 

所以我想我现在的问题是如何将第一个和第二个查询放在触发器中?或者有没有其他方法我可以不使用触发器来做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:0)

你不需要触发器。首先,您必须将预览sum_Fans放入prev_sum_Fans变量,如下所示:

$prev_sum_Fans= SELECT sum_Fans FROM followers WHERE cur_id=cur_id-1;

然后像这样插入:

INSERT INTO `followers` 
(id,FB_Followers,TW_Followers,sum_Fans,FB_Fan_Growth_Speed)
VALUES
($cur_id, $FB_Followers, $TW_Followers, $FB_Followers+$TW_Followers,$prev_sum_Fans/$sum_Fans);
相关问题