Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Транзакции  [new]
lnu
Member

Откуда: Ukraine, Lviv
Сообщений: 240
Я что то не пойму как работают транзакции... :(
Вот кусок кода:
BEGIN TRANSACTION
TRY
	UPDATE (this.Cursorname) SET &cCURvalueslist WHERE ID=cId 
	UPDATE &tablename SET &cTABvalueslist WHERE ID=cId
	END TRANSACTION
CATCH TO oerr
	ROLLBACK
	this.processerror(oerr)
	result = .F.
ENDTRY

Если во втором UPDATE'е происходит ошибка, то не должн ли быть отменен первый UPDATE? Почему-то, єтого не происходит после rollback...
Или тут надо делать вложенные транзакции?
23 дек 04, 14:57    [1204659]     Ответить | Цитировать Сообщить модератору
 Re: Транзакции  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Пожалуй, тоже пошлю ... по ссылке

http://forum.foxclub.ru/read.php?f=5&i=101830&t=101739#reply_101830

Откат транзакции возвращает базу в то состояние в котором она была на момент начало транзакции (с точки зрения того пользователя, кто эту транзакцию начал). Т.е. на момент подачи команды BEGIN TRANSACTION. А в этот момент не было ни первой, ни второй модификации по UPDATE.
23 дек 04, 15:35    [1204922]     Ответить | Цитировать Сообщить модератору
 Re: Транзакции  [new]
lnu
Member

Откуда: Ukraine, Lviv
Сообщений: 240
И все же первий Update исполнился... данные изменены!
BEGIN TRANSACTION
TRY
	UPDATE (this.Cursorname) SET &cCURvalueslist WHERE ID=cId 
	UPDATE &tablename SET &cTABvalueslist WHERE ID=cId
	ERROR 1098
	END TRANSACTION
CATCH TO oerr
	ROLLBACK
Select(this.Cursorname)
Browse && Тут єто четко видно....
	this.processerror(oerr)
	result = .F.
ENDTRY
23 дек 04, 15:50    [1205018]     Ответить | Цитировать Сообщить модератору
 Re: Транзакции  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Таблица (this.Cursorname) включена в базу данных?

Дело в том, что транзакция управляет только объектами включенными в контейнер базы данных. Свободные таблицы транзакцией не управляются.
23 дек 04, 16:05    [1205114]     Ответить | Цитировать Сообщить модератору
 Re: Транзакции  [new]
lnu
Member

Откуда: Ukraine, Lviv
Сообщений: 240
Нет, єто курсор.
23 дек 04, 16:08    [1205131]     Ответить | Цитировать Сообщить модератору
 Re: Транзакции  [new]
lnu
Member

Откуда: Ukraine, Lviv
Сообщений: 240
Ну ясно...
Спасибо.
23 дек 04, 16:13    [1205156]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить