Является ли временная таблица MySQL общим ресурсом?
У меня есть хранимая процедура MySQL, в которой используется временная таблица. Предположим, что мое имя таблицы - "temp", и я использую его для хранения некоторых средних данных. Он будет создан в начале процедуры и упадет в конце.
CREATE PROCEDURE p()
BEGIN
CREATE TEMPORARY TABLE \`temp\`(...);
INSERT INTO \`temp\` VALUES(...);
DROP TEMPORARY TABLE \`temp\`;
END;
Проблема заключается в том, что эта хранимая процедура может использоваться разными пользователями одновременно, поэтому я хочу знать, может ли это вызвать какие-либо проблемы (т.е. любой конфликт во вставленных данных в таблице temp). Другим словом является временная таблица общего ресурса в разных вызовах одного и того же SP?
Ответы
Ответ 1
Нет, временная таблица ограничена областью подключения к базе данных. Вы можете использовать временную таблицу в последующих вызовах процедуры во время одного и того же соединения с базой данных, но другие соединения не могут получить к ней доступ. Они могут создать таблицу с тем же именем, но каждая таблица temp будет независимой. Таблицы Temp уходят, когда вы закрываете соединение.
Ответ 2
Временная таблица видна только для текущей сессии.
Итак, если у вас несколько одновременных сеансов - каждый будет иметь свою собственную независимую временную таблицу с тем же именем.
Документация: http://dev.mysql.com/doc/refman/5.1/en/create-table.html, ctrl + f для "Вы можете использовать ВРЕМЕННОЕ"