gpt4 book ai didi

php - MySQL 触发器不会触发

转载 作者:行者123 更新时间:2023-11-29 16:11:45 24 4
gpt4 key购买 nike

事情是这样的。我的触发器有效 - 我已经用更简单的代码对其进行了测试。但由于某种原因,我的 select 语句似乎返回 false,即使我已经测试过它并且它确实是正确的。我可以不将这种逻辑包含在触发器之类的东西中吗?我在这方面工作的时间比我自豪地承认的时间还要长,但这些都不再有意义了。任何见解将不胜感激。谢谢你!

编辑:我可能应该包括这样一个事实:juiceApp 数据库与保存此触发器的数据库是不同的数据库。但我无法从中获取 ID,因为它是在 87586745wp 数据库中生成的。

CREATE DEFINER=`mysqluser`@`localhost` TRIGGER `87586745wp`.`wp_posts_AFTER_INSERT` AFTER INSERT ON `wp_posts` FOR EACH ROW
BEGIN
DECLARE no_data INT DEFAULT 0;
DECLARE email VARCHAR(255);
DECLARE user_id INT;
DECLARE email_cursor CURSOR FOR
SELECT DISTINCT au.UserID, au.UserEmailAddress
FROM `JuiceApp`.`AppPreferences` ap
JOIN `JuiceApp`.`AppUsers` au ON au.UserID = ap.UserID
WHERE ap.PreferenceControlID = 1
AND ap.PreferenceValue = 1;

DECLARE CONTINUE HANDLER FOR
NOT FOUND SET no_data = 1;

SET @sub = 'Broken Glass';

-- if article part of campaign
IF NEW.ID IN (
SELECT post.ID
FROM wp_posts post
INNER JOIN wp_term_relationships rel ON rel.object_id = post.ID
INNER JOIN wp_terms t ON t.term_id = rel.term_taxonomy_id
WHERE post.post_status = 'publish'
AND post.post_type = 'post'
AND t.term_id = 25)
THEN
OPEN email_cursor;
send_email_loop: LOOP
FETCH email_cursor INTO user_id, email;
IF no_data = 1 THEN
LEAVE send_email_loop;
END IF;
-- record email to be sent
INSERT INTO `JuiceApp`.`EmailQueue` (ArticleID, RecipientID, RecipientEmail, Subject)
VALUES (NEW.ID, user_id, email, @sub);
END LOOP send_email_loop;
CLOSE email_cursor;
END IF;

结束

最佳答案

这个答案的所有功劳都归功于@Solarflare:我在插入后实现了一个触发器 - 但我的逻辑仅适用于更新 - 正如 @Solarflare 正确地建议的那样,也许我正在查询的状态仅在插入后更新。现在效果很好。谢谢。

关于php - MySQL 触发器不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55193791/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com