我有一个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_result始终为0.如果我在触发器外运行查询,我得到正确的计数。起初我认为变量@newcompany没有得到一个值。但我已经检查过了。
我需要帮助!
答案 0 :(得分:0)
不明白你为什么使用LEFT join ????
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