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

Вниз

Транзакция в dbase   Найти похожие ветки 

 
tipman   (2008-12-03 13:56) [0]

Есть стааааренькие dbf файлы. Для доступа к ним использую TQuery. Есть необходимость добавлять несколько записей транзакцией, т.е. если хоть одна не добавилась, всё откатываем. Каким образом это осуществить не подскажите? Всю жизнь работаю с MS SQL, а тут такое, никак не могу разобраться...


 
sniknik ©   (2008-12-03 14:06) [1]

ну так посмотри в справке по BDE поддерживает ли он транзакции, вроде что то было...


 
tipman   (2008-12-03 14:26) [2]

посмотрю, ну во всяком случае в ограничения на dbase написно что поддерживает транзакции до 100 строк, значит что то должно быть. И в моей памяти всплывает что есть это в TTable. Там по моему какие то процедуры были для этого заточены, а вот в TQuery как?


 
Сергей М. ©   (2008-12-03 14:34) [3]


> на dbase написно что поддерживает транзакции до 100 строк


В действительности так и есть.
Это даже транзакцией в полной мере назвать нельзя - всего лишь жалкое отдаленное подобие.


> в TQuery как?


Точно так же - попытка модификации 100 и более табличного файла (неважно что - добавление, апдейт или удаление) в контексте одной и той же ТА вызовет исключение.


 
Anatoly Podgoretsky ©   (2008-12-03 15:03) [4]

> tipman  (03.12.2008 14:26:02)  [2]

Боюсь что и это относится только к Парадокс.


 
tipman   (2008-12-03 15:13) [5]

вообщем то моя транзакция НЕ на обработку 100 строк и более, а на добавление в среднем 10 строк, не более... Если при добавлении хоть одной из них возникло исключение (ну например есть такой ключ уже), откатываем всё добавленное. SQL запрос на добавление 10 строк одновременно в TQuery не проходит. Дело в том что в TQuery каждый DML оператор должен заканчиваться точкой с запятой, и после точки с запятой он не даёт ничего дописывать, т.е. свойство SQL в TQuery только один запрос, как я понимаю. Как именно организовать транзакцию в TQuery при работе с dbase?


 
Сергей М. ©   (2008-12-03 15:39) [6]


> TQuery каждый DML оператор должен заканчиваться точкой с
> запятой, и после точки с запятой он не даёт ничего дописывать


> свойство SQL в TQuery только один запрос, как я понимаю.
>  Как именно организовать транзакцию в TQuery


В огороде бузина, а в Киеве дядька.

Возможности или невозможности TQuery никак не связаны ни с транзакциями вообще ни с ТА в dBase/FoxPro в частности.

Database.StartTransaction;
try  
 for i := 1 to 10 do begin    
    Query.Params[..].Value := ..;
    Query.Params[..].Value := ..;
    Query.Params[..].Value := ..;
    Query.ExecSQL;    
 end;
 Database.Commit;
except
 Database.Rollback;
end;


 
tipman   (2008-12-03 15:45) [7]

Спасибо Сергей, я уже разобрался сам только что. Пришёл написать что вопрос снят, а тут ответ...

Меня только и ткнуть то надо было на TDatabase, было бы достаточно. ADO пользую обычно, с BDE только вскользь...

Спасибо


 
MsGuns ©   (2008-12-03 16:48) [8]

Транзакции в большинстве локалок существуют только на уровне локальной буферизации. Т.е. "откат" сводится в сбросу изменений последних N записей. К транзакциям в истинном их понимании это имеет такое же отношение, как вареники к животноводству


 
Виталий Панасенко   (2008-12-04 09:20) [9]


> MsGuns ©   (03.12.08 16:48) [8]

Но также добавлений и удалений записей. Правда, если система "упадет", то ....


 
Anatoly Podgoretsky ©   (2008-12-04 11:22) [10]

то будет больно.



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

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

Наверх





Память: 0.46 MB
Время: 0.006 c
15-1245585239
Кто б сомневался
2009-06-21 15:53
2009.10.18
Автозапуск на Vista и цифровая подпись


2-1250417006
Smile
2009-08-16 14:03
2009.10.18
"Задисейблить" системную кнопку закрытия формы


2-1250758059
cross
2009-08-20 12:47
2009.10.18
004A6FF4, D96F?


15-1250678829
DSKalugin
2009-08-19 14:47
2009.10.18
Переведите пожалуйста с паскаля на php


2-1250337245
Чипырик
2009-08-15 15:54
2009.10.18
Вопрос по БД





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