如何在MySQL存储过程中创建唯一的临时表?

5

我在我的程序中创建了一个临时表,但总是出现“表已存在”的错误。

然后我尝试创建一个随机名称以避免冲突,但我对如何执行SQL字符串不够了解。

SET @tbName = CONCAT('temp', random_id);

PREPARE stmt1 FROM 'CREATE TEMPORARY TABLE ? (`FIELDNAME` float NOT NULL);';
EXECUTE stmt1 using @tbName;
DEALLOCATE PREPARE stmt1;

上面的代码不起作用。为什么?如何纠正它?

1个回答

3
 mysql> set @table_name := 'mytable';
 Query OK, 0 rows affected (0.02 sec)

 mysql> set @sql_text:=concat('create table ',@table_name,'(id int unsigned)');
 Query OK, 0 rows affected (0.00 sec)

来自http://rpbouman.blogspot.com/2005/11/mysql-5-prepared-statement-syntax-and.html

本文介绍了MySQL 5中的预处理语句语法和用法。预处理语句是一种将SQL语句分为两部分的方法:首先,将SQL语句发送到服务器以准备执行,然后再提供参数进行执行。这可以提高应用程序的性能,并增强安全性,因为使用预处理语句可以更有效地防止SQL注入攻击。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接