Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.16;
Скачать: CL | DM;

Вниз

Как правильно оформить транзакцию?   Найти похожие ветки 

 
Bless   (2003-11-25 12:46) [0]

Как осуществить проверку в нижеприведенном коде, надо откатить или подтвердить транзакцию?

begin tran
insert into <table1>
insert into <table1>
insert into <table1>
if <все нормально (вставка прошла успешно во все 3 таблицы)>
then Commit tran
else Rollback tran


 
Reindeer Moss Eater ©   (2003-11-25 12:48) [1]

try
begin tran
insert into <table1>
insert into <table1>
insert into <table1>
Commit tran
except
Rollback tran
end


 
Digitman ©   (2003-11-25 12:49) [2]

begin tran
try
insert into <table1>
insert into <table1>
insert into <table1>
Commit tran
except
Rollback tran
raise;
end;


 
Reindeer Moss Eater ©   (2003-11-25 12:52) [3]

А если вложенных транзакций нет поддержи, то begin tran вызовет исключение если есть активная транзакция


 
Danilka ©   (2003-11-25 12:55) [4]

[3] Reindeer Moss Eater © (25.11.03 12:52)
вызовет, но при этом не откатится.


 
Reindeer Moss Eater ©   (2003-11-25 12:57) [5]

так не надо думать, что мой не анализирует причину исключения.
он откатывает только тогда, когда надо


 
Danilka ©   (2003-11-25 12:58) [6]

[5] Reindeer Moss Eater © (25.11.03 12:57)
:))


 
Reindeer Moss Eater ©   (2003-11-25 12:58) [7]

мой псевдокод в смысле


 
Bless   (2003-11-25 13:01) [8]

Я не сказал, что это пишется внутри хранимой процедуры.
А там try...except нету


 
Reindeer Moss Eater ©   (2003-11-25 13:02) [9]

А там try except есть


 
Reindeer Moss Eater ©   (2003-11-25 13:02) [10]

Просто по другому называтеся


 
Digitman ©   (2003-11-25 13:03) [11]


> Bless


SQL-сервер какой ?


 
Bless   (2003-11-25 13:05) [12]

sorry. MSSQL


 
ZrenBy ©   (2003-11-25 13:07) [13]

begin tran
insert into <table1>
if(@@error != 0)goto Err

insert into <table1>
if(@@error != 0)goto Err

insert into <table1>
if(@@error != 0)goto Err

Commit
return(0)
Err:
if(@@trancount>0)rollback
return(-101)


 
Digitman ©   (2003-11-25 13:11) [14]


> Bless


в MSSQL - не знаю

в FB PSQL, начиная с Alpha4, имеются конструкции

SAVEPOINT savepoint_name; (create savepoint)
ROLLBACK [WORK] TO [SAVEPOINT] savepoint_name; (rollback to


 
Bless   (2003-11-25 14:27) [15]

Reindeer Moss Eater © (25.11.03 13:02) [10]> А как именно эта конструкция называется в MSSQL?

ZrenBy © (25.11.03 13:07) [13]> Гм... В принципе подошло бы. Но ведь @@error - переменная глобальная и теоритически наверное возможна ситуация, когда после моего INSERT INTO... но до IF @@ERROR... какая-то процедура выполнит что-то и @@error будет указывать не на мою ошибку, а на ошибку этой процедуры? Или это исключено? Или ничего не остается, как проигнорировать такую ничтожно малую вероятность?

Digitman © (25.11.03 13:11) [14]>
В T-SQL тоже есть SAVE TRAN <savepoint_name>
Но ведь вопрос в том, чтобы определить, КОГДА надо откатываться,а не КУДА.


 
Reindeer Moss Eater ©   (2003-11-25 14:32) [16]

Но ведь вопрос в том, чтобы определить, КОГДА надо откатываться,а не КУДА.

Это надо решить самому, а не пробовать выяснить с помощью функций.

А как именно эта конструкция называется в MSSQL?

@@error



Страницы: 1 вся ветка

Текущий архив: 2003.12.16;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.014 c
3-52083
sokohigh
2003-11-17 20:22
2003.12.16
ExpressQuantumGrid4 + ExpressEditors Library 4


7-52422
Fox-Programmer
2003-10-09 12:15
2003.12.16
Печать в файл


3-52054
sash2
2003-11-25 10:03
2003.12.16
Как перенести все данные в один файл?


6-52329
Pavels
2003-10-22 10:16
2003.12.16
dns/soa/mx/ns - помогите с инфой/доками


14-52392
Думкин
2003-11-21 04:43
2003.12.16
С днем рождения! 21 ноября.