В настоящее время у меня есть следующий запрос MySQL, который я хотел бы включить в триггер, а не как отдельный запрос.Запрос обновляет данные в две таблицы, которые можно объединять:
UPDATE `testing_names` INNER JOIN `purchase_names`
ON `testing_names`.`fulldomain` = `purchase_names`.`fulldomain`
SET
`testing_names`.`account_id` = `purchase_names`.`account_id`,
`purchase_names`.`purchase_status` = 1
WHERE `purchase_names`.`purchase_status` = 0
Строка (отдельно) вставляется в testing_names
.Эта строка ДОЛЖНА иметь соответствующую запись в purchase_names
.После вставки строки в testing_names
, когда мой запрос UPDATE выполняется в следующий раз, он обновит testing_names.account_id
и обновит purchase_names.purchase_status
, чтобы эффективно пометить эту задачу как выполненную.
Имеет смысл выполнить это какчасть триггера, но я не смог создать триггер, который выполняет эту работу.
До сих пор я успешно создал триггер:
DELIMITER $$
CREATE TRIGGER `my_trigger` AFTER INSERT
ON testing_names
FOR EACH ROW BEGIN
UPDATE `testing_names` INNER JOIN `purchase_names`
ON `testing_names`.`fulldomain` = `purchase_names`.`fulldomain`
SET
`testing_names`.`account_id` = `purchase_names`.`account_id`,
`purchase_names`.`purchase_status` = 1
WHERE `purchase_names`.`purchase_status` = 0;
END$$
DELIMITER ;
, но, очевидно, выполняюНовый запрос UPDATE не разрешен, потому что при вставке строки появляется ошибка: #1442 - Can't update table 'testing_names' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.