MySQL - 在存储过程中发生异常时删除临时表

时间:2017-03-10 06:19:46

标签: mysql

我是MySQL的新手,无法弄清楚如何在发生任何异常时删除在存储过程中创建的所有临时表。问题是当第一次调用存储过程时发生错误,如果我再次尝试调用过程,它会抛出异常,例如"临时表已经存在"。

我可以使用DROP TEMPORARY TABLE IF退出[tablename]语法而不是再创建临时表,但我认为它不是最好的解决方案。当程序中发生任何SQL异常时,有没有办法删除所有临时表?

以下是我试图删除临时表但我收到错误

  

错误代码:1051未知表' [databasename] .testtable'

代码:

CREATE DEFINER=`*****`@`%` PROCEDURE `Test`()
BEGIN
    DECLARE CONTINUE HANDLER FOR sqlexception
    BEGIN
        DROP TEMPORARY TABLE TestTable;
    END;

    CREATE TEMPORARY TABLE TestTable AS SELECT * FROM
    (
        (SELECT 1 AS AccountID)
        UNION
        (SELECT 2 AS AccountID)
    ) bt;


    SELECT 
        * 
    FROM 
        TestTable;

    SIGNAL SQLSTATE '45000' SET message_text = 'test';


    DROP TEMPORARY TABLE TestTable;
END

0 个答案:

没有答案