Я довольно новичок в 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 ;