存储过程正在执行但未按预期更新表

时间:2016-10-24 14:00:13

标签: 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_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_table:

mysql> CALL `site_database`.`p_refresh_selling_table`(81);
Query OK, 0 rows affected (0.01 sec)

我知道表应该按预期填充,因为当我运行存储过程的select部分((SELECT DISTINCT original_table.id ..)时,我得到结果的输出,然后应该转到销售表。

我还检查了权限,用户(尽管与定义者不同)对存储过程中使用的数据库/模式具有所有权限。

此外,我在单独的(本地)环境中复制了此架构,并且此存储过程执行得很好,我可以看到sales_table填充了预期的结果。

请指出正确的方向,说明为什么没有填充sell_table。

谢谢

1 个答案:

答案 0 :(得分:1)