Microsoft SQL Server / Транзакции в MS SQL Server
|
|
---|---|
#18+
... Кстати в субд Firebird в PSQL вообще нельзя использовать управление транзакциями, в смысле start, commit, rollback transaction. Предполагается, что хп выполняется в контексте транзакции, которая стартуется и коммитится или откатывается извне процедуры. Спасибо за подсказку. Ну, я такое вроде и не собирался делать, теперь тем более буду знать. ) У меня по плану (надо вот сегодня дописать и потестировать), там один запрос и одна ХП выполняются. Ну вот перед этим соответстенно вручную собираюсь стартовать транзакцию, а в конце завершать или откатывать. И их разработчиков. Вот им надо запретить. Делать транзакции. ... |
|
:
|
|
19.04.2023, 16:23 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
В ms sql нет вложенных транзакций, есть извращённые способы это обойти. Но это не вечно. Не честно. Например каждый раз его проверять? Это. От очень-очень старых версий сибайз осталось. Изврат. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2023, 16:26 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|
---|---|
#18+
там русским по-белому про @@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:31 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
Ну и что? Знаю такой счётчик. Что это меняеет? Например каждый раз его проверять? Это. От очень-очень старых версий сибайз осталось. Изврат. 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:41 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
Ну и что? Знаю такой счётчик. Что это меняеет? Например каждый раз его проверять? Это. От очень-очень старых версий сибайз осталось. Изврат. 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
Нравится:
Не нравится:
|
|||
19.04.2023, 16:48 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
всегда писал примерно так (тут совсем пседокод): 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 И добротный код везде дублируешь. Дибильный код всегда и везде. P.S. выдел жирным то, что забыл указать изначально ... |
|||
:
Изменено: 19.04.2023, 16:54 - PaNik
Нравится:
Не нравится:
|
|||
19.04.2023, 16:53 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
... Например каждый раз его проверять? Это. От очень-очень старых версий сибайз осталось. Изврат. 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 И добротный код везде дублируешь. Дибильный код всегда и везде. P.S. выдел жирным то, что забыл указать изначально ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2023, 16:56 |
|
Start [/forum/search.php?do_search=1&replies_to=363013&author_mode=wrote_post]: |
0ms |
get settings: |
0ms |
get forum list: |
4ms |
searching: |
12ms |
get settings: |
0ms |
get forum list: |
4ms |
get found posts: |
26ms |
track hit: |
20ms |
get online users: |
55ms |
check new: |
1ms |
others: | 332ms |
total: | 454ms |
0 / 0 |