我是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