временные таблицы MYSQL

rubalex

Новичок
временные таблицы MYSQL

есть ф-я №1 в котрой скл запрос с созданием временных таблиц.

есть ф-я №2 из котрой в цикле много раз вызывается ф-я №1
и я получаю ошибку Table 'tmp_table' already exists
что понятно так как я не закрываю конект с базой.

Вопрос как корректно это избежать.
открывать соединение в начале ф-ии №1 и закрывать в конце?

если я буду закрывать конект то не будут обрабатываться остальные запросы после выходы из цикла в ф-ии №2.

подскажите идею
 

lucas

Guest
есть ф-я №1 в котрой скл запрос с созданием временных таблиц.
1. DROP TABLE temporary_table.
2. При новом вызове функции генерировать новое уникальное имя для временной таблицы, коим и пользоваться.
 

rubalex

Новичок
да про генерацию уникально имени это я додумался а вот с DROP чего то стормознул... спасибо.

а скольок может быть временных таблиц?

-~{}~ 09.06.04 14:03:

для DROP table нужны полномочия. а если я дам то так же можно и любую другую талицу уничтожить.. что ни есть хорошо
 

lucas

Guest
Количество любых (постоянных/временных) таблиц не ограничено.
 

rubalex

Новичок
CREATE TEMPORARY TABLE tmp_table SELECT......
DROP TABLE tmp_table

ERROR IN SQL QUERY - DROP TABLE tmp_table
1051: Unknown table 'tmp_table'

или

ERROR IN SQL QUERY - DROP TEMPORARY TABLE tmp_table
1051: Unknown table 'tmp_table'

ПОЧЕМУ?
 

lucas

Guest
Опция TEMPORARY игнорируется в 4.0. В 4.1 эта опция работает следующим образом:

Только уничтожает временные таблицы.
Не закрывает открытую транзакцию.
Права доступа не проверяются.
Использование слова TEMPORARY - это хороший способ удостовериться что вы случайно не уничтожите настоящую таблицу.
(c) MySQL manual
 

rubalex

Новичок
это я уже читал. я пробовал и без этой опции
ERROR IN SQL QUERY - DROP TABLE tmp_table
1051: Unknown table 'tmp_table'

таже фигня

-~{}~ 09.06.04 14:36:

все сделал перед созданием временной таблицы
DROP TABLE IF EXISTS tmp_table

-~{}~ 09.06.04 14:36:

спасибо
 

rubalex

Новичок
да жаль что 4,1 еще не готова а то DROP TEMPORARY очень желательна. иначе приходитсья давать права DROP
 
Сверху