Workbench Сбои из-за связи | Выполнение команды обновления с процедурой запуска и сохранения - PullRequest
0 голосов
/ 26 января 2020

Я довольно новичок в SQL триггерах и хранимых процедурах.
Я написал триггер обновления и процедуру сохранения. У меня есть две таблицы. Первая ( contact_table ) содержит контакт, который содержит электронную почту, телефон и т. Д. c, а другая таблица ( status_table ) содержит состояние задачи и другие. Информация. Всякий раз, когда статус задачи обновляется до доступного, мне нужно запускать лямбда-функцию.
Когда я запускаю запрос на обновление, он вылетает из-за ошибки соединения. Я просто хотел проверить, правильный ли мой код.

Процедура сохранения

DROP PROCEDURE IF EXISTS call_lambda_for_email;
DELIMITER ;;
    CREATE PROCEDURE call_lambda_for_email(IN contact_table_id VARCHAR(255), 
                                    IN contact_table_email VARCHAR(255), 
                                    IN contact_table_phone VARCHAR(255),
                                    IN status_table_id VARCHAR(255), 
                                    IN status_table_task_num VARCHAR(255), 
                                    IN status_table_status VARCHAR(255)
                                    ) LANGUAGE SQL 
    BEGIN
        CALL mysql.lambda_async(
           'arn:aws:lambda:us-east-1:1111111111:function:func_name',
           CONCAT('{"status_table_id" : "', status_table_id, 
               '", "status_table_task_num" : "', status_table_task_num, 
               '", "status_table_status" : "', status_table_status, 
               '", "contact_table_id" : "', contact_table_id, 
               '", "contact_table_email" : "', contact_table_email,  
               '", "contact_table_phone" : "', contact_table_phone, '"}')
       );
    END
    ;;
DELIMITER ;

Триггер

DROP TRIGGER IF EXISTS status_table_update_trigger;

DELIMITER ;;
CREATE TRIGGER status_table_update_trigger 
  AFTER UPDATE ON status_table
  FOR EACH ROW
BEGIN
        select contact_table.id as contact_id, contact_table.email as contact_email, contact_table.phone as contact_phone,
               NEW.id as status_id, NEW.task_num as status_task_num, NEW.status as status
        from contact_table
        INNER JOIN 
        status_table 
        on OLD.id = NEW.contact_id_fk 
        where NEW.status='Available' INTO @contact_id, @contact_email, @contact_phone, @status_id, @status_task_num, @status;
        CALL call_lambda_for_email(@contact_id, @contact_email, @contact_phone, @status_id, @status_task_num, @status);
        SIGNAL SQLSTATE '02000' SET MESSAGE_TEXT = 'Trigger Fired';

END
;;
DELIMITER ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...