|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
Главное понимать , что нет вложенных транзакций. При таком подходе. В стэке xp не надо использовать Begin transaction Commit transaction Rollbac transaction ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2023, 09:05 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
Rollbac transaction ... |
|||
:
Изменено: 19.04.2023, 09:30 - PaNik
Нравится:
Не нравится:
|
|||
19.04.2023, 09:29 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
Главное понимать , что нет вложенных транзакций. При таком подходе. В стэке xp не надо использовать Begin transaction Commit transaction Rollbac transaction Кстати в субд Firebird в PSQL вообще нельзя использовать управление транзакциями, в смысле start, commit, rollback transaction. Предполагается, что хп выполняется в контексте транзакции, которая стартуется и коммитится или откатывается извне процедуры. Спасибо за подсказку. Ну, я такое вроде и не собирался делать, теперь тем более буду знать. ) У меня по плану (надо вот сегодня дописать и потестировать), там один запрос и одна ХП выполняются. Ну вот перед этим соответстенно вручную собираюсь стартовать транзакцию, а в конце завершать или откатывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2023, 11:35 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
Работает нормально, после выполнения этого другие процедуры тоже нормально пишут данные в БД. Единственное, не помню точно, сталкивался с этим раньше или нет, думал, что в самой Delphi это не нужно: имена параметров хп начинаются с @. Сначала попробовал без @ вот так (изменил в примере название хп и параметра, типа соглашение о нераспространении :) ): Код: Delphi 1.
Код: Delphi 1.
... |
|||
:
Изменено: 19.04.2023, 15:33 - s62
Нравится:
Не нравится:
|
|||
19.04.2023, 15:32 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
Работает нормально, после выполнения этого другие процедуры тоже нормально пишут данные в БД. Единственное, не помню точно, сталкивался с этим раньше или нет, думал, что в самой Delphi это не нужно: имена параметров хп начинаются с @. Сначала попробовал без @ вот так (изменил в примере название хп и параметра, типа соглашение о нераспространении :) ): Код: Delphi 1.
Код: Delphi 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2023, 15:37 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|
---|---|
#18+
Главное понимать , что нет вложенных транзакций. При таком подходе. В стэке xp не надо использовать Begin transaction Commit transaction Rollbac transaction Кстати в субд Firebird в PSQL вообще нельзя использовать управление транзакциями, в смысле start, commit, rollback transaction. Предполагается, что хп выполняется в контексте транзакции, которая стартуется и коммитится или откатывается извне процедуры. Спасибо за подсказку. Ну, я такое вроде и не собирался делать, теперь тем более буду знать. ) У меня по плану (надо вот сегодня дописать и потестировать), там один запрос и одна ХП выполняются. Ну вот перед этим соответстенно вручную собираюсь стартовать транзакцию, а в конце завершать или откатывать. ... |
|
:
|
|
19.04.2023, 16:12 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|
---|---|
#18+
Главное понимать , что нет вложенных транзакций. При таком подходе. В стэке xp не надо использовать Begin transaction Commit transaction Rollbac transaction Кстати в субд Firebird в PSQL вообще нельзя использовать управление транзакциями, в смысле start, commit, rollback transaction. Предполагается, что хп выполняется в контексте транзакции, которая стартуется и коммитится или откатывается извне процедуры. Спасибо за подсказку. Ну, я такое вроде и не собирался делать, теперь тем более буду знать. ) У меня по плану (надо вот сегодня дописать и потестировать), там один запрос и одна ХП выполняются. Ну вот перед этим соответстенно вручную собираюсь стартовать транзакцию, а в конце завершать или откатывать. ... |
|
:
|
|
19.04.2023, 16:14 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
Главное понимать , что нет вложенных транзакций. При таком подходе. В стэке xp не надо использовать Begin transaction Commit transaction Rollbac transaction Кстати в субд Firebird в PSQL вообще нельзя использовать управление транзакциями, в смысле start, commit, rollback transaction. Предполагается, что хп выполняется в контексте транзакции, которая стартуется и коммитится или откатывается извне процедуры. Спасибо за подсказку. Ну, я такое вроде и не собирался делать, теперь тем более буду знать. ) У меня по плану (надо вот сегодня дописать и потестировать), там один запрос и одна ХП выполняются. Ну вот перед этим соответстенно вручную собираюсь стартовать транзакцию, а в конце завершать или откатывать. И их разработчиков. Вот им надо запретить. Делать транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2023, 16:16 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
Главное понимать , что нет вложенных транзакций. При таком подходе. В стэке xp не надо использовать Begin transaction Commit transaction Rollbac transaction Кстати в субд Firebird в PSQL вообще нельзя использовать управление транзакциями, в смысле start, commit, rollback transaction. Предполагается, что хп выполняется в контексте транзакции, которая стартуется и коммитится или откатывается извне процедуры. Спасибо за подсказку. Ну, я такое вроде и не собирался делать, теперь тем более буду знать. ) У меня по плану (надо вот сегодня дописать и потестировать), там один запрос и одна ХП выполняются. Ну вот перед этим соответстенно вручную собираюсь стартовать транзакцию, а в конце завершать или откатывать. И их разработчиков. Вот им надо запретить. Делать транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2023, 16:19 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
... На стороне сервера там может быть много вложенных процедур. И их разработчиков. Вот им надо запретить. Делать транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2023, 16:20 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|
---|---|
#18+
... На стороне сервера там может быть много вложенных процедур. И их разработчиков. Вот им надо запретить. Делать транзакции. ... |
|
:
|
|
19.04.2023, 16:21 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
Главное понимать , что нет вложенных транзакций. При таком подходе. В стэке xp не надо использовать Begin transaction Commit transaction Rollbac transaction Кстати в субд Firebird в PSQL вообще нельзя использовать управление транзакциями, в смысле start, commit, rollback transaction. Предполагается, что хп выполняется в контексте транзакции, которая стартуется и коммитится или откатывается извне процедуры. Спасибо за подсказку. Ну, я такое вроде и не собирался делать, теперь тем более буду знать. ) У меня по плану (надо вот сегодня дописать и потестировать), там один запрос и одна ХП выполняются. Ну вот перед этим соответстенно вручную собираюсь стартовать транзакцию, а в конце завершать или откатывать. И их разработчиков. Вот им надо запретить. Делать транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2023, 16:22 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|
---|---|
#18+
... Кстати в субд Firebird в PSQL вообще нельзя использовать управление транзакциями, в смысле start, commit, rollback transaction. Предполагается, что хп выполняется в контексте транзакции, которая стартуется и коммитится или откатывается извне процедуры. Спасибо за подсказку. Ну, я такое вроде и не собирался делать, теперь тем более буду знать. ) У меня по плану (надо вот сегодня дописать и потестировать), там один запрос и одна ХП выполняются. Ну вот перед этим соответстенно вручную собираюсь стартовать транзакцию, а в конце завершать или откатывать. И их разработчиков. Вот им надо запретить. Делать транзакции. ... |
|
:
|
|
19.04.2023, 16:23 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
#363019
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
Ссылка на вложение:
Ссылка на вложение 2:
|
|||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
#18+
Главное понимать , что нет вложенных транзакций. При таком подходе. В стэке xp не надо использовать Begin transaction Commit transaction Rollbac transaction Кстати в субд Firebird в PSQL вообще нельзя использовать управление транзакциями, в смысле start, commit, rollback transaction. Предполагается, что хп выполняется в контексте транзакции, которая стартуется и коммитится или откатывается извне процедуры. Спасибо за подсказку. Ну, я такое вроде и не собирался делать, теперь тем более буду знать. ) У меня по плану (надо вот сегодня дописать и потестировать), там один запрос и одна ХП выполняются. Ну вот перед этим соответстенно вручную собираюсь стартовать транзакцию, а в конце завершать или откатывать. ... |
|||||||||||||||||||
:
Нравится:
Не нравится:
|
|||||||||||||||||||
19.04.2023, 16:25 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
... Кстати в субд Firebird в PSQL вообще нельзя использовать управление транзакциями, в смысле start, commit, rollback transaction. Предполагается, что хп выполняется в контексте транзакции, которая стартуется и коммитится или откатывается извне процедуры. Спасибо за подсказку. Ну, я такое вроде и не собирался делать, теперь тем более буду знать. ) У меня по плану (надо вот сегодня дописать и потестировать), там один запрос и одна ХП выполняются. Ну вот перед этим соответстенно вручную собираюсь стартовать транзакцию, а в конце завершать или откатывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2023, 16:26 |
|
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+
прочитай книжку (можно выборочно) по моей ссылке - хоть и по древней версии - понимание работы сервака организует ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2023, 16:39 |
|
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
#363037
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
Ссылка на вложение:
|
||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
#18+
прочитай книжку (можно выборочно) по моей ссылке - хоть и по древней версии - понимание работы сервака организует ... |
||||||||||||||||
:
|
||||||||||||||||
19.04.2023, 16:44 |
|
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=362604&author_mode=wrote_post]: |
0ms |
get settings: |
1ms |
get forum list: |
3ms |
searching: |
17ms |
get settings: |
0ms |
get forum list: |
5ms |
get found posts: |
71ms |
track hit: |
25ms |
get online users: |
56ms |
check new: |
269ms |
others: | 326ms |
total: | 773ms |
0 / 0 |