Я использую глобальные временные таблицы Oracle 11g, поскольку мне нужно решение, в котором я могу добавить строки во временную таблицу для объединения, и я хочу, чтобы были включены только строки, добавленные во временную таблицу для соединения / сеанса Oracle. Я использую Global Temp Table в Oracle, потому что я хочу, чтобы таблица существовала между сессиями, поэтому ее не нужно создавать заново каждый раз, когда я создаю запрос. Это работает хорошо.
Мое определение таблицы Oracle выглядит следующим образом:
CREATE GLOBAL TEMPORARY TABLE book_id_temp
(
book_id RAW(32)
)ON COMMIT DELETE ROWS;
У меня такая же структура базы данных также на стороне SQL Server 2008-R2, и мне нужно аналогичное решение в SQL Server. Я хочу:
- Открыть соединение SQL (ADO.NET)
- Внутри транзакции:
- -Добавить строки во временную таблицу.
- -Присоедините их к другой таблице, ВЫБЕРИТЕ результаты
- - В объединение должны быть включены только строки, добавленные во время этого сеанса. Другой поток может выполняться в той же временной таблице. Возможно, тогда лучше использовать локальную временную таблицу?
- Откат всей транзакции.
Из того, что я прочитал о глобальных временных таблицах в SQL Server, таблицы существуют после завершения соединения, как обычная таблица и как глобальная временная таблица в Oracle. Тем не менее, это не ясно, в отношении объема данных. Только ли сеанс SQL Server, который создал строки, имеет доступ к нему, как в Oracle? Какова доступность данных с помощью глобальных временных таблиц SQL Server? У вас есть предложение альтернативы для достижения моей цели?