Отправить запрос http в триггере MySQL после вставки в таблицу

Я работаю в PHP. Я должен создать триггер mysql, который запускает HTTP-запрос после вставки в таблицу. Ниже приведен код.

DELIMITER @@
CREATE TRIGGER Test_Trigger
AFTER INSERT ON insertsms
FOR EACH ROW
BEGIN
SET @tt_json = (SELECT json_object(id,addtime,title)
FROM insertsms WHERE id = NEW.id LIMIT 1);
SET @tt_resu = (SELECT http_put(CONCAT('--url localhost--')));
END;
@@
DELIMITER ;

Но я получаю ошибки, как

Сообщение: SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1305 ФУНКЦИЯ emg.json_object не существует

Сообщение: SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1305 ФУНКЦИЯ emg.http_put не существует

Как убрать эту ошибку? Я не смог загрузить файлы поддержки, содержащие эти функции. Я проверил на localhost. Есть ли другой способ выполнить мое требование? Пожалуйста, кто-нибудь, помогите мне ..

3

Решение

Хотя это технически возможно, я настоятельно рекомендую вам не следовать этому маршруту по нескольким причинам:

  1. Использование UDF само по себе является угрозой безопасности. UDF доступны для всех пользователей базы данных — вы не можете предоставлять им привилегии EXECUTE.

  2. Делать любые нетранзакционный операции в триггере просто неправильно. Изменения данных, сделанные оператором DML (в вашем случае это обновление), могут и будут отменены в реальном сценарии. Вы не сможете отменить ваши http-звонки.

  3. Вы продлеваете время для транзакции вставки, возможно, вызывая тайм-ауты ожидания блокировки для других операций обновления / вставки.

Настоятельно рекомендуется к прочтению:


Теперь, скорее всего, вам нужна рабочая очередь, например beanstalked. Использование такого специализированного промежуточного программного обеспечения намного лучше, чем организация очередей с базой данных.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]