Нужно ли мне вызывать откат, если я никогда не фиксирую? - PullRequest
18 голосов
/ 01 ноября 2011

Я подключаюсь к серверу SQL без использования автоматической фиксации. Если все прошло успешно, я вызываю commit. В противном случае я просто выхожу. Нужно ли явно вызывать откат, или он будет откатываться автоматически, когда мы закрываем соединение без фиксации?

На случай, если это имеет значение, я выполняю команды SQL из proc sql в SAS.

ОБНОВЛЕНИЕ: Похоже, SAS может автоматически вызвать commit в конце блока proc sql, если откат не вызван. Так что в этом случае откат будет более чем хорошей практикой; это было бы необходимо.

Окончательное обновление: В итоге мы переключились на новую систему, которая, как мне кажется, ведет себя противоположно нашей предыдущей. После завершения транзакции без указания фиксации или отката она будет выполнена. Итак, приведенный ниже совет, безусловно, верен: всегда явно фиксируйте или откатывайте.

1 Ответ

9 голосов
/ 01 ноября 2011

Это должно откатиться при закрытии соединения. Акцент на следует по причине: -)

Для правильной обработки транзакций и ошибок вы должны всегда фиксировать, когда выполняются условия фиксации, и выполнять откат, если они не выполняются. Я думаю, что это хорошая привычка всегда делать коммит или откат, когда это делается, и не полагаться на отключение / и т.д. Все, что нужно - это одна ошибка или неправильно / не закрытый сеанс для создания кошмарной цепочки блокировки для всех: -)

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