Как создать уникальные временные таблицы в процедурах MySQL? - PullRequest
5 голосов
/ 11 января 2010

Я создавал временную таблицу в моей процедуре, но всегда получал сообщение об ошибке «таблица уже существует».

Затем я попытался создать случайное имя, чтобы избежать столкновения, но я недостаточно знаю, как выполнять строки 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 голосов
/ 11 января 2010
 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

...