Mysql 插入触发器后在内部选择count()不正确
我有一个后插入触发器,看起来像这样Mysql 插入触发器后在内部选择count()不正确,mysql,sql,triggers,Mysql,Sql,Triggers,我有一个后插入触发器,看起来像这样 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 JOI
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_结果总是0。如果我在触发器之外运行查询,我会得到正确的计数。起初我认为变量@newcompany没有得到值。但我已经检查过了
我需要帮助 不明白为什么要使用左连接
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您确定触发器已执行吗?此处使用的左联接与内部联接相同。是的,触发器执行是因为执行了第一次插入。我想您认为我应该执行内部联接吗?我修改了上面粘贴的查询。试试看是否有效。您的左连接在代码中被视为与内部连接相同。您好,请返回工作并运行修改后的查询,它就工作了。非常感谢你。我以前从未在连接处使用和调节。伟大的