我有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;
所以我想我现在的问题是如何将第一个和第二个查询放在触发器中?或者有没有其他方法我可以不使用触发器来做到这一点?
谢谢!
答案 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);