Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 由于连接|使用触发器和存储过程执行更新命令,工作台崩溃_Mysql_Stored Procedures_Database Trigger_Amazon Aurora - Fatal编程技术网

Mysql 由于连接|使用触发器和存储过程执行更新命令,工作台崩溃

Mysql 由于连接|使用触发器和存储过程执行更新命令,工作台崩溃,mysql,stored-procedures,database-trigger,amazon-aurora,Mysql,Stored Procedures,Database Trigger,Amazon Aurora,我是SQL触发器和存储过程的初学者 我已经编写了一个更新触发器和一个存储过程。 我有两张桌子。 第一个(联系人表)包含联系人,其中包含电子邮件、电话等,另一个表(状态表)包含任务状态和其他信息。每当任务状态更新为可用时,我需要触发lambda函数。 当我运行更新查询时,它会导致工作台崩溃,并出现连接丢失错误。 我只是想交叉检查我的代码是否正确 存储过程 DROP PROCEDURE IF EXISTS call_lambda_for_email; DELIMITER ;; CREATE

我是SQL触发器和存储过程的初学者
我已经编写了一个更新触发器和一个存储过程。 我有两张桌子。 第一个(联系人表)包含联系人,其中包含电子邮件、电话等,另一个表(状态表)包含任务状态和其他信息。每当任务状态更新为可用时,我需要触发lambda函数。
当我运行更新查询时,它会导致工作台崩溃,并出现连接丢失错误。 我只是想交叉检查我的代码是否正确

存储过程

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 ;

我将数据放在两个表中。表#1
插入触点表值(1001,'test@gmail.com', '111-111-111'); 将值(1002,'test@gmail.com', '111-111-111'); 将值(1003,'test@gmail.com', '111-111-111');表格#2<代码>插入状态表格值('Task#11','Task1101','Available',1001);在状态表值中插入('Task_12','Task 2202','Not Available',1002);在状态表中插入值(“任务13”、“任务3303”、“休假”1003)
首先,您应该检查触发器的select函数是否工作并且足够快,然后您应该检查lambda函数的json是否有效。最后,您必须检查lamda函数是否与json一起工作。