Mysql 正在执行但未按预期更新表的存储过程
我有一个存储过程:Mysql 正在执行但未按预期更新表的存储过程,mysql,sql,Mysql,Sql,我有一个存储过程: DELIMITER $$ CREATE DEFINER=`old_dev_user`@`%` PROCEDURE `p_refresh_selling_table`(location_id VARCHAR(5)) BEGIN DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN ROLLBACK; END; SET sql_log_off = 1; START TRANSACTION; IF (location
DELIMITER $$
CREATE DEFINER=`old_dev_user`@`%` PROCEDURE `p_refresh_selling_table`(location_id VARCHAR(5))
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
END;
SET sql_log_off = 1;
START TRANSACTION;
IF (location_id = '') THEN
DELETE FROM selling_table;
INSERT INTO selling_table
(column1,
column2,
column3,
..
..
.
)
(SELECT DISTINCT original_table.id,
..
..
..
..
);
ELSE
DELETE FROM selling_table where id=location_id;
INSERT INTO selling table
(column1,
column2,
column3,
..
..
.
)
(SELECT DISTINCT original_table.id,
..
..
..
..
);
END IF;
COMMIT;
END$$
DELIMITER ;
我遇到的问题是,存储过程执行时没有任何错误,但结果没有按预期更新到selling_表:
mysql> CALL `site_database`.`p_refresh_selling_table`(81);
Query OK, 0 rows affected (0.01 sec)
我知道该表应该按预期填充,因为当我运行存储过程的select部分((select DISTINCT original_table.id…)时,我会得到结果的输出,然后这些结果会转到销售表
我还检查了权限,并且用户(尽管与定义者不同)对存储过程中使用的数据库/架构拥有所有权限
我还在一个单独的(本地)环境中复制了这个模式,这个存储过程执行得很好,我可以看到用预期结果填充的selling_表
请告诉我为什么没有填充销售表的正确方向
谢谢我建议您安装并使用rdebug调试存储过程:
我不是使用此工具的专家,但经过测试后,我尝试在我的SP上使用它,结果出现以下错误:mysql>调用rdebug_step_into();错误1205(HY000):超过了锁定等待超时;尝试重新启动事务