Я работаю в 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. Есть ли другой способ выполнить мое требование? Пожалуйста, кто-нибудь, помогите мне ..
Хотя это технически возможно, я настоятельно рекомендую вам не следовать этому маршруту по нескольким причинам:
Использование UDF само по себе является угрозой безопасности. UDF доступны для всех пользователей базы данных — вы не можете предоставлять им привилегии EXECUTE.
Делать любые нетранзакционный операции в триггере просто неправильно. Изменения данных, сделанные оператором DML (в вашем случае это обновление), могут и будут отменены в реальном сценарии. Вы не сможете отменить ваши http-звонки.
Вы продлеваете время для транзакции вставки, возможно, вызывая тайм-ауты ожидания блокировки для других операций обновления / вставки.
Настоятельно рекомендуется к прочтению:
Теперь, скорее всего, вам нужна рабочая очередь, например beanstalked. Использование такого специализированного промежуточного программного обеспечения намного лучше, чем организация очередей с базой данных.
Других решений пока нет …