Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вопрос про вложенные транзакции
|
|||
|---|---|---|---|
|
#18+
Уважаемые! Посмотрите, всю ли я правильно делаю: DECLARE @transcount INT SET @transcount=@@TRANCOUNT IF @transcount=0 BEGIN TRANSACTION mytran ELSE SAVE TRAN mytran ......серия команд ......серия команд IF @@ERROR=0 IF @transcount=0 COMMIT TRANSACTION ELSE COMMIT TRANSACTION mytran ELSE ROLLBACK TRAN mytran С уважением и благодарностью за ответы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2002, 17:09 |
|
||
|
Вопрос про вложенные транзакции
|
|||
|---|---|---|---|
|
#18+
Значится так. Полагаю, что речь идет о вложенных транзакциях в хранимых процедурах. 1. Статус операции (@@ERROR=0) необходимо проверять после каждой команды, а не делать серию команд без проверки. 2. Блок \nIF @@ERROR=0 IF @transcount=0 COMMIT TRANSACTION ELSE COMMIT TRANSACTION mytran ELSE ROLLBACK TRAN mytran лучше переписАть так: \nif (@transcount=0) COMMIT TRANSACTION и вот почему: COMMIT необходим только тогда, когда наш фрагмент сам начал транзакцию. В проьтивном случае, вызвавшая процедура сама решит, делать ли COMMIT или нет... 3. Неплохо бы добавить возврат кода ошибки для приложения Целую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2002, 18:26 |
|
||
|
Вопрос про вложенные транзакции
|
|||
|---|---|---|---|
|
#18+
Отвечаю: п.1 и п.3 я и так делаю, а за п.2 спасиб! Чмок! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2002, 04:56 |
|
||
|
Вопрос про вложенные транзакции
|
|||
|---|---|---|---|
|
#18+
Страждущая Новенькая, я совсем не понял смысл этих плясок с бубном. Код IF @transcount=0 BEGIN TRANSACTION mytran означает, что ты хочешь стартовать транзакцию, если ни одной еще не запущено? Читай про вложенные транзакции. Вкратце... \nBEGIN TRAN -- Стартовали первую транзакцию, @@trancount=1 BEGIN TRAN -- Стартовали вторую транзакцию, @@trancount=2 IF @@Error<>0 ROLBACK TRAN -- Откатываются ВСЕ!!! транзакции COMMIT TRAN -- Закончили вторую транзакцию @@trancount=1. На самом деле ничего не закомичено!!! IF @@Error<>0 ROLBACK TRAN -- Откатываются ВСЕ!!! транзакции COMMIT TRAN -- Закончили первую транзакцию @@trancount=0. Вот теперь все закомичено. Именовать транзакции не имеет смысла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2002, 05:54 |
|
||
|
Вопрос про вложенные транзакции
|
|||
|---|---|---|---|
|
#18+
2Osya: Можно, конечно, убрать mytran из BEGIN TRANSACTION mytran в блоке \nIF @transcount=0 BEGIN TRANSACTION mytran ELSE SAVE TRAN mytran Но тогда ухудшается читабельность кода - так ведь проще понять, что стартуем транзакцию для данной процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2002, 06:58 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32029491&tid=1822857]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 269ms |
| total: | 397ms |

| 0 / 0 |
