Моя система вставляет строку данных тревоги с несколькими столбцами в таблицу базы данных mysql каждый раз, когда возникает новая тревога. Необходимо иметь возможность отправлять по электронной почте самую последнюю строку данных тревоги каждый раз, когда это происходит.
Попытался использовать триггер, который вызывает процедуру сценария php для запроса, извлечения и отправки по электронной почте последней вставленной строки, и хотя все действия происходят правильно, я не получаю текущие вставленные данные тревоги, но вместо этого я получаю сигнал тревоги строка данных непосредственно перед только что вставленными данными тревоги. Попытался использовать как LIMIT 0,1, так и LIMIT 1 в конце инструкции SELECT, но все еще не получал самые последние данные вставки.
Я предполагаю, что процедура триггера CALL происходит до того, как данные тревоги фактически были вставлены в БД. (используя AFTER INSERT для триггера) Возможно, подумал, может быть, crontab для запуска сценария оболочки, чтобы каждую минуту проверять наличие новых аварийных сигналов, но не знал, как написать сценарий, чтобы инициировать электронную почту только один раз каждый раз, когда новый аварийный сигнал вставляется в БД.
Работая над таблицами истории, я получаю значения последней вставки, подобные этому в моем триггере:
CREATE DEFINER = CURRENT_USER TRIGGER `db`.`table_AFTER_INSERT` AFTER INSERT ON `table` FOR EACH ROW INSERT INTO `db`.`table_history`
(`id`,
`contactinfo`,
`ag_contact_type_fk`,
`ag_uq_pid_fk`,
`hist_entry_type`)
VALUES
(NEW.id,
NEW.contactinfo,
NEW.ag_contact_type_fk,
NEW.ag_uq_pid_fk,
"insert");
Таким образом, я получаю значения последней вставленной строки каждый раз с «NEW.xyz».
Возможно, это поможет вам получить данные в вашем триггере.
Других решений пока нет …