Вот в чем дело.Мой триггер работает - я проверил его с более простым кодом.но по какой-то причине мое утверждение select, похоже, возвращает false, хотя я его проверил, и это действительно так.Могу ли я не включать такую логику в триггер или что-то?Я работаю над этим дольше, чем могу с гордостью признать, и больше это не имеет смысла.Любое понимание будет с благодарностью.благодарю вас!
Редактировать: Я, вероятно, должен учитывать тот факт, что база данных juiceApp отличается от той, что содержит этот триггер.Но я не могу получить от него идентификатор, так как он генерируется в 87586745wp db.
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;
END