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

Вниз

Был interbase а теперь MS SQL 2000. А где транзакции???   Найти похожие ветки 

 
AndrewVolkov   (2003-01-23 16:06) [0]

Добрый день.
До этого писал на интербейсе. Обработка транзакции commit i rollback все легко и просто, ,блок try except и все рулит. Сегодня посмотрел на скл2000 и подключился к нему через ADO. А вот где у него можно управлять транзакциями?

Если кто в курсе, подскажите в каком напралении копать?


 
stone   (2003-01-23 16:32) [1]

ADOConnection.BeginTran, а также CommitTran, RollbackTran


 
sniknik   (2003-01-23 16:43) [2]

или (по мойму лутше)

ADOCommand.CommandText:= "BEGIN TRANSACTION";
ADOCommand.Execute;

аналогично
ROLLBACK TRANSACTION
COMMIT TRANSACTION


 
AndrewVolkov   (2003-01-23 17:10) [3]

>to sniknik а почему с ADOCommand.CommandText:="begin transaction" лучше?


И еще тогда один вопросик, помойму и без этого (в смысле без старта транзакции) смело все записывается напрямую в базу. Это значит надо обязательно отследить чтобы не получилось работы напрямую (типа с не стартанутойт транзакцией) чтобы не неимеить потом ролбека ?


 
MOA   (2003-01-23 17:31) [4]

На SQL Servere не может быть ничего вне какой-либо транзакции. Если не стартовать транзакцию явно, она стартует "автоматически", "автоматически" же накатится или откатится. Т.е. "напрямую" - это только кажется. На самом деле, в контексте "неявной" транзакции.


 
sniknik   (2003-01-23 17:42) [5]

AndrewVolkov (23.01.03 17:10)
> а почему с ADOCommand.CommandText:="begin transaction" лучше?
привычка, с одним были проблемы с другим нет, можно сделать так
ADOCommand.CommandText:=
"BEGIN TRANSACTION "+
"DECLARE @MaxZn int "+
"INSERT INTO FirstTable SELECT * FROM SecondTable "+
"SELECT @MaxZn = Max(CASHNUMBER) FROM FirstTable "+
"UPDATE ThirdTable FieldMax = @MaxZn WHERE FieldZavFromMax = 1 "+
"COMMIT TRANSACTION";
ADOCommand.Execute;
(обновление зависящих друг от друга данных одним пакетом в одной транзакции) послал - забыли,
в случае
ADOConnection.BeginTran;
далаем (кусками)
ADOCommand....
....
ADOCommand....
....
--- обрыв сети %%%%%
ADOConnection.CommitTran < - с клиента не отработает, данные потеряли.

еще аргументов?


 
Suntechnic   (2003-01-24 07:49) [6]

>MOA © (23.01.03 17:31)
Всё вообщем то правильно, только указать товарищу вопрошающему, чтобы он не путал implicit and explicit транзакции c режимом autocommit. Хоть это вещи и тесно связанные, но разные.



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

Форум: "Базы";
Текущий архив: 2003.02.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.01 c
1-28818
SaperXL
2003-01-31 03:58
2003.02.10
RichEdit - прокрутка вертикального скролла вниз


1-28842
snoup
2003-02-02 19:38
2003.02.10
Как отключиться от интернета??? Программно, конечно!


14-29043
OxOTHuK
2003-01-23 22:32
2003.02.10
операторы передачи управления и особенности их использования


1-28912
cta
2003-01-31 08:49
2003.02.10
Fatal error


3-28617
Jaxtor
2003-01-23 11:37
2003.02.10
Доступ к значениям записи в DBGrid е после DBGrid.OnCellClick





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский