Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.12.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
4-52438
rel_
2003-10-21 08:45
2003.12.16
Создание окна


4-52435
jonni
2003-10-21 17:20
2003.12.16
как проиграть *.WAV


1-52281
Don
2003-12-04 08:20
2003.12.16
Как сделать, чтобы в Tform при запуске программы запускался *.ht


6-52324
rava
2003-10-16 11:57
2003.12.16
terminal


1-52180
maxXP
2003-12-03 15:04
2003.12.16
Как получить код нажатой клавиши клавиатуры





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский