当“rsform_submission_values”表在两列中有一个具有特定条件的条目时,我需要在名为“user_usergroup_map”的表中插入一行。要向“user_usergroup_map”添加一行,我需要在名为“ch54b_rsform_submission”的表中查找 UserId,因为 userID 未存储在 'rsform_submission_values'。链接两个表的公共字段是 SubmissionId 字段。
我一直在寻找一个触发器来实现这一点,但是,它不会向“user_usergroup_map”表写入任何内容。
下面的mysql有什么明显的问题吗?或者有没有办法对 MYSQL 中的触发器进行故障排除,以便我可以查看是否有任何问题。
谢谢你皮特。
IF NEW.FieldName = '_STATUS' AND NEW.FieldValue = '1' THEN
INSERT INTO ch54b_user_usergroup_map (`user_id`, `group_id`)
SELECT UserId, '12'
FROM ch54b_rsform_submission_values
INNER JOIN ch54b_rsform_submission ON ch54b_rsform_submission_values.SubmissionId = ch54b_rsform_submissions.SubmissionId;
END IF
我一直在寻找一个触发器来实现这一点,但是,它不会向“user_usergroup_map”表写入任何内容。
您的查询似乎试图将所有用户插入到 user_usergroup_map 中,而不是与正在插入/更新的行相关的用户。因此我建议更简单的方法:
IF NEW.FieldName = '_STATUS' AND NEW.FieldValue = '1' THEN
INSERT INTO ch54b_user_usergroup_map (`user_id`, `group_id`)
SELECT UserId, 12
FROM ch54b_rsform_submission
WHERE SubmissionId = NEW.SubmissionId;
END IF
注意,如果您在 user_usergroup_map (user_id, group_id) 上有一个唯一键,并且您想要处理用户已在该组中的情况,那么您可以将
INSERT
更改为 INSERT IGNORE
以避免错误