2008-11-18 2 views
0

В сущности, я хотел бы сохранить несколько строк во временной переменной для жизни процедуры в MySQL.Как временно хранить строки в хранимой процедуре?

Моя процедура захватит столбец внешних ключей в начале процедуры. Когда я закончил работу с ними, я хочу обновить таблицу, чтобы указать, что они были обработаны. В эту таблицу могут быть вставлены, пока моя процедура работает над набором данных, поэтому я не хочу ошибочно отмечать эти новые строки как обработанные. Я также не хочу блокировать эту таблицу и удерживать поток, создающий вставки.

Является ли временная таблица лучшим решением?

ответ

1

Временная таблица будет самым простым и, вероятно, лучшим способом решить эту проблему.

+0

Да, это то, что закончилось. – Fredrick

1

Если это в SQL Server, исследовать с помощью табличную переменную вместо ...

Declare @MyFKs Table 
    (FkId Integer Primary Key Not Null, 
    isProcessed bit) 

Хотя они не являются гибкими (не может добавить несколько индексов к ним), Табличные переменные не участвуют в сделке так что для узких таблиц, где вы просто сохраняете ключ и не более нескольких столбцов данных, они могут быть лучше, чем временная таблица.

+0

Это в MySQL :) – Robert

+0

ahh ... извините, тогда ответ да, используйте временные таблицы .. но если он будет управлять более чем несколькими тысячами строк, убедитесь, что вы поместили соответствующий индекс (индексы) в таблицу temp когда вы его создаете ... –

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