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

Вниз

Был 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
14-29037
Guest
2003-01-22 21:01
2003.02.10
Проект DeepTown(Дип Таун) или Виртуальная Реальность


14-29032
Zhenka
2003-01-24 12:20
2003.02.10
Как найти ПОЛИНОМ


4-29165
Big_Rom
2002-12-27 20:21
2003.02.10
как програмно поменять размер страницы принтера


1-28877
RomanaPro
2003-01-30 00:02
2003.02.10
Вывод информации на экран (TLabel)


14-29038
DeMoN-777
2003-01-23 18:18
2003.02.10
Посоветуйте