Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Транзакции / 6 сообщений из 6, страница 1 из 1
23.12.2004, 14:57
    #32841880
lnu
lnu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции
Я что то не пойму как работают транзакции... :(
Вот кусок кода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
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...
Или тут надо делать вложенные транзакции?
...
Рейтинг: 0 / 0
23.12.2004, 15:35
    #32842045
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции
Пожалуй, тоже пошлю ... по ссылке

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

Откат транзакции возвращает базу в то состояние в котором она была на момент начало транзакции (с точки зрения того пользователя, кто эту транзакцию начал). Т.е. на момент подачи команды BEGIN TRANSACTION. А в этот момент не было ни первой, ни второй модификации по UPDATE.
...
Рейтинг: 0 / 0
23.12.2004, 15:50
    #32842106
lnu
lnu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции
И все же первий Update исполнился... данные изменены!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
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
...
Рейтинг: 0 / 0
23.12.2004, 16:05
    #32842155
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции
Таблица (this.Cursorname) включена в базу данных?

Дело в том, что транзакция управляет только объектами включенными в контейнер базы данных. Свободные таблицы транзакцией не управляются.
...
Рейтинг: 0 / 0
23.12.2004, 16:08
    #32842166
lnu
lnu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции
Нет, єто курсор.
...
Рейтинг: 0 / 0
23.12.2004, 16:13
    #32842180
lnu
lnu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции
Ну ясно...
Спасибо.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Транзакции / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]