Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обработка ошибок внутри транзакции [MSSQL]


@dim ©   (2007-06-29 09:37:00) 

Есть некоторый код обрабатывающий ошибки в процедуре обновления записи в таблице
  SELECT @Count = count(*) FROM Operation
  WHERE OperationName = @name
  AND MakeKod = @makekod  

   IF @Count>1 --произошла ошибка
         BEGIN
              raiserror 13000  'Повторяющееся значение атрибута'
             ROLLBACK TRAN
             return -100
          END

работает нормально. Но Почему - то сообщение в приложение не приходит. В чем причина?


sniknik   (2007-07-05 11:38:00) [1]

а не лучше ли просто сделать уникальный индекс по этим полям, чем вообще чтото городить?


clickmaker   (2007-07-05 10:59:00) [2]


> Каким образом

if exists (select * from Operation
 WHERE OperationName = @name
 AND MakeKod = @makekod )
then
 raiserror 40001 'Повторяющееся значение атрибута'
else
 update...


dimaL   (2007-07-05 10:19:00) [3]


> а почему повторяющееся значение выясняется "задним числом"
> - селектом?
> Не проще ли перед обновлением проверить?

Каким образом, если процедура на обновление записи?


clickmaker   (2007-07-05 09:26:00) [4]


> @dim   (29.06.07 09:37)

а почему повторяющееся значение выясняется "задним числом" - селектом?
Не проще ли перед обновлением проверить?


ЮЮ   (2007-07-05 05:00:00) [5]

> А вы думаете ROLLBACK TRAN и return -100 будут отработаны?
> Конечно не будут. Догадались о чём я?


В конце-концов можно поменять местами
 ROLLBACK TRAN
 RAISERROR('Повторяющееся значение атрибута', 16, 1)
 RETURN

P.S. А разве это дело процедуры откатывать транзакцию, которую она не начинала?
В рамках транзакции выполняется только эта процедура или ещё есть что-то в пакете?


_MaSteR_NN_   (2007-07-04 09:46:00) [6]

А вы думаете ROLLBACK TRAN и return -100 будут отработаны? Конечно не будут. Догадались о чём я?


Fay   (2007-06-29 12:54:00) [7]

set nocount on ?


@dim   (2007-06-29 11:09:00) [8]


> Ega23 ©  

Что изменится?


Ega23   (2007-06-29 09:54:00) [9]

Так попробуй:
RAISERROR (N'Повторяющееся значение атрибута', 16, 1)


Наверх

Титульная страница Поиск, карта сайта Написать письмо