Могу ли я использовать TRAN & ROLLBACK для предварительного просмотра? - PullRequest
3 голосов
/ 18 января 2012

Я пишу «предварительный просмотр» для отчета, который уже существует. Как это сейчас запрограммировано, генерация отчета изменяет базу данных (генерирует счет-фактуру для заказа, затем генерирует отчет). Теперь мне нужен способ создания отчета без изменения базы данных. Создать счет-фактуру легче, чем удалить его, поэтому я подумал так:

  1. начать транзакцию
  2. сделать счет
  3. чтение данных в объект (набор данных)
  4. транзакция отката
  5. набор данных фида для отчета

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

спасибо всем !!!

Ответы [ 2 ]

6 голосов
/ 18 января 2012

Это не рекомендуемое решение. Вы будете создавать блокировки для таблиц и создавать ненужные записи в журнале. Вся идея кажется невероятной.

Не могли бы вы перекодировать, чтобы разделить код GenerateInvoice и GenerateReport на отдельные хранимые процедуры? Затем либо вызовите их отдельно, либо добавьте еще одну DoBoth хранимую процедуру?

2 голосов
/ 18 января 2012

Как уже упоминал Демс, для этого не рекомендуется использовать транзакцию.

Подход, который я бы использовал для решения этой проблемы, обычно заключается в добавлении Param в мой StoredProc, чтобы узнать, является ли это предварительным просмотром или нет.

Я бы сделал те же операции, однако, если бы это был сохраненный процесс, который вставляет или обновляет новые строки, я бы тянул соответствующие данные в #TeoraryTable и редактировал бы эти данные вместо непосредственного редактирования реальных таблиц.

В конце моей процедуры я просто проверяю, просматриваем ли мы предварительный просмотр или нет, и если нет, я бы вставлял / обновлял новые строки из моей # TemporaryTable.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...