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

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

Транзакции [D7, MSSQL]


Ross ©   (2004-06-30 12:36:00) 

Насколько я понял, существует 2 вида транзакций. Одни выполняются на стороне сервера, другие на стороне клиента. Вопрос: AdoConnection.BeginTrans открывает транзакцию на стороне клиента?


Курдль   (2004-06-30 15:33:00) [1]


> bushmen ©   (30.06.04 14:18) [13]
> >но никак не мог вывести результат в переменную (1-выполнена,
> 0->откат)
>
> А какие проблемы?

Проблемы в методологии. Многие СУБД не дадут подтвердить транзакцию из процедуры. Да и кому это надо?


bushmen   (2004-06-30 14:18:00) [2]

>но никак не мог вывести результат в переменную (1-выполнена, 0->откат)

А какие проблемы?

create procedure test(@res int out) as
begin
set @res=1
begin tran t1
insert into ....
if @@error<>0 goto ErrTran
insert into ...
if @@error<>0 goto ErrTran
commit tran t1
return

ErrTran:
 rollback tran t1
 set @res=0
 return
end


Ross   (2004-06-30 14:06:00) [3]

А как лучше: через AdoConnection, или создать хранимую процедуру на сервере. Почему спрашиваю: сначала хотел через процедуру на сервере, но никак не мог вывести результат в переменную (1-выполнена, 0-откат), и в зависимости от этого вывести  на клиенте сообщение об успешном или нет завершении. Потом мне посоветовали использовать AdoConnection.BeginTrans....


Ross   (2004-06-30 14:00:00) [4]

Ross   (30.06.04 13:57) [9]

Извините, не обновил вовремя: bushmen © (30.06.04 13:55) [8]


Vlad   (2004-06-30 13:58:00) [5]


> Ross   (30.06.04 13:57) [9]

Да, см. bushmen ©   (30.06.04 13:55) [8]


Ross   (2004-06-30 13:57:00) [6]

to Nikolay M. ©   (30.06.04 13:36) [5]:
к сожалению, у меня ссылка не заработала

> Автоматически закрывается коннект к базе, соотв. закрывается и транзакция
И происходит откат ее?


bushmen   (2004-06-30 13:55:00) [7]

> Если во время выполнения выключается компьютер клиента,
> то что происходит в этом случае?

Причем не просто закрывается, а откатывается.


Vlad   (2004-06-30 13:40:00) [8]


> Открыта она может быть и на клиенте и на сервере.

В том смысле что клиент только дает сигнал на открытие транзакции серверу.


Vlad   (2004-06-30 13:39:00) [9]


> Ross   (30.06.04 13:34) [4]

Сама транзакция работает на сервере. Открыта она может быть и на клиенте и на сервере.

> Если во время выполнения выключается компьютер клиента,
> то что происходит в этом случае?

Автоматически закрывается коннект к базе, соотв. закрывается и транзакция


Nikolay M.   (2004-06-30 13:36:00) [10]


> я слышал именно о транзакциях на стороне сервера и на стороне
> клиента

Слышал звон...
Скорее, о ЗАПУСКЕ транзакций на клиенте и сервере.


> Если во время выполнения выключается компьютер клиента,
> то что происходит в этом случае?

http://www.sql.ru/forum/actualthread.aspx?bid=1&tid=103478


Ross   (2004-06-30 13:34:00) [11]

К сожалению, не помню источник, но я слышал именно о транзакциях на стороне сервера и на стороне клиента. К примеру, в программе, при нажатии на кнопку выполняется код:
Try
  AdoConnection.BeginTrans;
  ....//выполнение операций с данными
  AdoConnection.CommitTrans;
Except
  AdoConnection.RollbackTrans;
End;
Если во время выполнения выключается компьютер клиента, то что происходит в этом случае?


Vlad   (2004-06-30 13:21:00) [12]


> Ross   (30.06.04 13:17) [2]

Что такое "транзакция на стороне клиента" ?
Может ты путаешь с курсором ?


Ross   (2004-06-30 13:17:00) [13]

Нет литературы, это мое суждение. А как можно при помощи AdoConnection "указать", на какой стороне должна выполниться транзакция. И как можно узнать на какой стороне она выполнилась?


Nikolay M.   (2004-06-30 12:58:00) [14]

Нет, все не так. Откуда пришла такая инфа?


Наверх

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