2013-04-22 2 views
0

Если у меня есть хранимая процедура, которая создает временную таблицу X каждый раз при ее запуске, есть способ запуска хранимой процедуры с каким-то уникальным идентификатором сеанса, так что когда пользователь A запускает хранимую процедуру и создает временную таблицу X, тогда, когда человек B запускает ту же процедуру, он также не создает временную таблицу X, а затем сбой.

Я в основном хочу иметь процедуру, которая что-то делает, но я хочу, чтобы люди с muluple запускали одну и ту же процедуру одновременно с отсутствием процедуры, поскольку временные таблицы уже созданы. Просто интересно, есть ли что-то, что я могу сделать с переменными сеанса в MySQL, или, возможно, использовать информацию о подключении кого-либо, чтобы сделать сеанс уникальным для каждого человека, выполняющего эту процедуру. Возможно, каждый раз создается таблица X_session_ID. Есть ли способ создать уникальный идентификатор в хранимой процедуре?Уникальная сессия MySQL для выполнения хранимой процедуры

ответ

0

Вы можете создать необходимую временную таблицу с помощью CREATE TEMPORARY TABLE, которая предотвратит конфликты имен между пользователями, не прибегая к генерации уникальных идентификаторов;

Временные таблицы

Вы можете использовать ключевое слово TEMPORARY при создании таблицы. Таблица ВРЕМЕНИ видна только текущему соединению и автоматически отбрасывается при закрытии соединения. Это означает, что два разных соединения могут использовать одно и то же имя временной таблицы, не конфликтуя друг с другом или с существующей таблицей без тегов с тем же именем.

+0

Спасибо. Я использую следующий CREATE TEMPORARY TABLE search_columns_temp1 как часть моей процедуры. Поэтому каждый раз, когда выполняется процедура, создается эта временная таблица. Означает ли это, что когда человек A подключается, выполняется процедура, и человек B подключается и выполняет ту же процедуру одновременно, возможно, что две таблицы search_columns_temp1 создаются в одной базе данных? – user1236443

+0

@ user1236443 Да, но ни один пользователь не может видеть временную таблицу другого пользователя, оба могут иметь таблицу с тем же именем и видеть только свои собственные. –

+0

Я думаю, что проблема в том, что хранимая процедура имеет определенные привилегии, была определена мной и имеет тенденцию работать как я (то есть SQL SECURITY DEFINER). Поэтому каждый раз, когда эта процедура выполняется, она запускается под моими данными. Это было сделано для того, чтобы я не дал многим пользователям такую ​​же привилегию просто для запуска этой одной процедуры. Работает ли временная таблица? Основано на соединении? или если он запускается под меня все время, будет ли он терпеть неудачу, потому что временная таблица уже создана? – user1236443

Смежные вопросы