[英]SELECT count() inside AFTER INSERT trigger incorrect
I have an AFTER INSERT-trigger that looks like this. 我有一个看起来像这样的AFTER INSERT触发器。
BEGIN
SET @newcompany = NEW.company_id;
IF NEW.company_id is not null THEN
SET @my_result = (SELECT count(*) FROM wp_wysija_user u
LEFT JOIN wp_pods_company c ON c.id = u.company_id
LEFT JOIN wp_podsrel rel ON c.id = rel.item_id
WHERE rel.field_id=3384 AND rel.related_item_id=5 AND u.company_id = @newcompany);
INSERT INTO wp_wysija_user_list(list_id, user_id, sub_date)
VALUES (5, NEW.user_id, UNIX_TIMESTAMP());
IF @my_result > 0 THEN
INSERT INTO wp_wysija_user_list(list_id, user_id, sub_date)
VALUES (7, NEW.user_id, UNIX_TIMESTAMP());
END IF;
END IF;
END
My problem is that @my_result is always 0. If I run the query outside the trigger I get the right count. 我的问题是@my_result始终为0。如果我在触发器之外运行查询,我将获得正确的计数。 At first I thought that the variable @newcompany didn´t get a value. 起初,我认为变量@newcompany没有值。 But I have checked that. 但是我已经检查过了。
I need help here! 我在这里需要帮助!
Don't understand why you use LEFT joins???? 不明白为什么要使用LEFT联接????
BEGIN
SET @newcompany = NEW.company_id;
IF NEW.company_id is not null THEN
SET @my_result = (SELECT count(*) FROM wp_wysija_user u
LEFT JOIN wp_pods_company c ON c.id = u.company_id
LEFT JOIN wp_podsrel rel ON c.id = rel.item_id and rel.field_id=3384 AND
rel.related_item_id=5
WHERE u.company_id = @newcompany);
INSERT INTO wp_wysija_user_list(list_id, user_id, sub_date)
VALUES (5, NEW.user_id, UNIX_TIMESTAMP());
IF @my_result > 0 THEN
INSERT INTO wp_wysija_user_list(list_id, user_id, sub_date)
VALUES (7, NEW.user_id, UNIX_TIMESTAMP());
END IF;
END IF;
END 结束
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.