powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / курсор и транзакция
4 сообщений из 4, страница 1 из 1
курсор и транзакция
    #32026502
Наташа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
никак не могу понять, что неправильно
если инсерт срабатывает без ошибок, то транзакция commit и начинается следующая
а если ошибка, то она откатывается, а потом еще и коммитится,
и при следующей транзакции такая ошибка
The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION

вот код
--------------
set @X_Client = CURSOR FORWARD_ONLY FOR
SELECT
cod

FROM client;
Open @X_Client;

WHILE 1=1
BEGIN
FETCH NEXT FROM @X_Client
into
@cod

if (@@FETCH_STATUS<>0)
break;

begin tran

insert into Address (COD) values (@COD);

if @@error <> 0
begin
rollback tran;
raiserror ('ошибка при заполнении Address! COD= %s',16,1,@cod);
end;

commit tran;

END;
...
Рейтинг: 0 / 0
курсор и транзакция
    #32026505
Dankov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Потому что ROLLBACK не прерывает запрос и не отменяет нижеследующие операторы, а нижеследует как раз COMMIT. Курсор тут не при чем.
...
Рейтинг: 0 / 0
курсор и транзакция
    #32026511
Наташа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо
я сделала с метками
...
Рейтинг: 0 / 0
курсор и транзакция
    #32026547
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно и без меток
if @@error <> 0
begin
rollback tran;
raiserror ('ошибка при заполнении Address! COD= %s',16,1,@cod);
end;
else
commit tran;
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / курсор и транзакция
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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