powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Поиск: Искать ответы на сообщение: #363040  
3 сообщений из 3, страница 1 из 1
Microsoft SQL Server / Транзакции в MS SQL Server
    #363040
Sparrow
Скрыть профиль Поместить в игнор-лист
Sparrow 
Участник
PaNik  19.04.2023, 16:31
[игнорируется]
Sparrow  19.04.2023, 16:26
[игнорируется]
PaNik  19.04.2023, 16:23
[игнорируется]
Sparrow  19.04.2023, 16:22
[игнорируется]
PaNik  19.04.2023, 16:19
[игнорируется]
...
В ms sql нет вложенных транзакций, есть извращённые способы это обойти. Но это не вечно. Не честно.
там русским по-белому про @@trancount написано
Ну и что? Знаю такой счётчик. Что это меняеет?

Например каждый раз его проверять? Это. От очень-очень старых версий сибайз осталось. Изврат.
всегда писал примерно так (тут совсем пседокод):
procerdure <proc_name>
<паратметры>
as
begin
begin try
begin tran
... --
commit tran;
end try
begin catch
if @@trancount > 0 roolback;
...
end catch;
end;
go
Ты так пытаешься всегда и везде проверить что транзакция уже была .
И добротный код везде дублируешь. Дибильный код всегда и везде.

Зачем?
...
Изменено: 19.04.2023, 16:51 - Sparrow
Рейтинг: 0 / 0
Microsoft SQL Server / Транзакции в MS SQL Server
    #363044
PaNik
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Sparrow  19.04.2023, 16:48
[игнорируется]
PaNik  19.04.2023, 16:31
[игнорируется]
Sparrow  19.04.2023, 16:26
[игнорируется]
PaNik  19.04.2023, 16:23
[игнорируется]
Sparrow  19.04.2023, 16:22
[игнорируется]
...
там русским по-белому про @@trancount написано
Ну и что? Знаю такой счётчик. Что это меняеет?

Например каждый раз его проверять? Это. От очень-очень старых версий сибайз осталось. Изврат.
всегда писал примерно так (тут совсем пседокод):
procerdure <proc_name>
<паратметры>
as
begin
begin try
begin tran
... --
commit tran;
end try
begin catch
if @@trancount > 0 roolback;
...
throw @@error_number, @@error_message, 1;
end catch;
end;
go
Ты так пытаешься всегда и везде проверить что транзакция уже была .
И добротный код везде дублируешь. Дибильный код всегда и везде.
этот код гарантирует, что если 3-ей и т.п. (по глубине вложенности) процедуре возникла ошибка, она будет корректно обработана в стартовой процедуре

P.S. выдел жирным то, что забыл указать изначально
...
Изменено: 19.04.2023, 16:54 - PaNik
Рейтинг: 0 / 0
Microsoft SQL Server / Транзакции в MS SQL Server
    #363050
PaNik
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
PaNik  19.04.2023, 16:53
[игнорируется]
Sparrow  19.04.2023, 16:48
[игнорируется]
PaNik  19.04.2023, 16:31
[игнорируется]
Sparrow  19.04.2023, 16:26
[игнорируется]
PaNik  19.04.2023, 16:23
[игнорируется]
...
Ну и что? Знаю такой счётчик. Что это меняеет?

Например каждый раз его проверять? Это. От очень-очень старых версий сибайз осталось. Изврат.
всегда писал примерно так (тут совсем пседокод):
procerdure <proc_name>
<паратметры>
as
begin
begin try
begin tran
... --
commit tran;
end try
begin catch
if @@trancount > 0 roolback;
throw @@error_number, @@error_message, 1;
end catch;
end;
go
Ты так пытаешься всегда и везде проверить что транзакция уже была .
И добротный код везде дублируешь. Дибильный код всегда и везде.
этот код гарантирует, что если 3-ей и т.п. (по глубине вложенности) процедуре возникла ошибка, она будет корректно обработана в стартовой процедуре

P.S. выдел жирным то, что забыл указать изначально
поправел
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Поиск: Искать ответы на сообщение: #363040  
Пользователи онлайн (31): Анонимы (15), IT-Клоп, Yandex Bot, Три нитки, Умник-практикующий, Просто Трёп, Bing Bot 1 мин., паразит 1 мин., Ветер 2 мин., anonymous 3 мин., Гарыныч 4 мин., Sparrow 5 мин., битый 5 мин., Biene Maja 5 мин., s62 5 мин., Ибрагимов Мага 82 7 мин., basename 8 мин.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]