How to create unique temporary tables in MySQL procedures?
mysql, stored-procedures, temp-tables
Solution
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)
from http://rpbouman.blogspot.com/2005/11/mysql-5-prepared-statement-syntax-and.html
Problem
I was creating a temporary table in my procedure, but I always got an error "table already exists". Then I tried to create a random name to avoid collision but I don't know enough about how to execute SQL strings ``` SET @tbName = CONCAT('temp', random_id); PREPARE stmt1 FROM 'CREATE TEMPORARY TABLE ? (`FIELDNAME` float NOT NULL);'; EXECUTE stmt1 using @tbName; DEALLOCATE PREPARE stmt1; ``` The code above doesn't works. Why? How to correct it?