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

Вниз

Вопрос по IBTransaction   Найти похожие ветки 

 
ILUHA   (2004-10-18 07:55) [0]

Здравствуйте. Не могли ли вы продсказать в поле Params компонента IBtransaction какие параметры вообще вводятся. Просто хотелось узнать а влруг пригодятся.


 
YurikGL ©   (2004-10-18 08:06) [1]

http://www.ibase.ru/develop.htm

Там еще много полезного


 
ILUHA   (2004-10-18 15:14) [2]

Я знаю что там много полезного но хотелось бы получить ответ на вопрос


 
Sergey13 ©   (2004-10-18 15:22) [3]

2[2] ILUHA   (18.10.04 15:14)
Двойной клик на компоненте тебе поможет.


 
sid ©   (2004-10-18 16:07) [4]

Снова привет Серега. Скажи, плиз, а что включить для работы нескольких приложений с одной таблицей: Snapshot, ReadCommitet, Read-only..., Read-write?


 
Sergey13 ©   (2004-10-18 16:13) [5]

2[4] sid ©   (18.10.04 16:07)
Я всегда работаю с ReadCommited.
А где почитать об этом см. в [1]


 
Vemer ©   (2004-10-18 19:33) [6]

Вот тебе мой пример.
2 Транзакции:
1) Read + Read Commited (Default у базы) - включена постоянно..
2) Обычная (без параметров) - стартует, делает свои дела и сразу завершается.

Первая видит изменения второй простым Open/Close.


 
jack128 ©   (2004-10-18 22:36) [7]

Vemer ©   (18.10.04 19:33) [6]
можно добавить snapshot для построения сложных отчетов..


 
ILUHA   (2004-10-19 04:43) [8]

Всем спасибо!!!! все понял! вопрос снимаю


 
Deniz ©   (2004-10-19 06:31) [9]

1. Читающая длинная
read
read_committed
rec_version
nowait
2. Пишущая короткая
write
concurrency
nowait
3. Для отчетов длинная
read
concurrency
nowait


 
Vemer ©   (2004-10-21 00:21) [10]

Пожалуйста объясните разницу по функциональному смыслу между 1-ым и 3-им вариантом. заранее спасибо.


 
jack128 ©   (2004-10-21 03:43) [11]

Vemer ©   (21.10.04 0:21) [10]
read_commited - транзакция видит все закоммиченные записи.
snapshot - видит только те записи, которые были закоммичены на момент СТАРТА этой транзакции.

read_commited нельзя использовать для постороения отчетов(если только отчет не является результатом одного запроса) вот почему:
есть таблица
goods
id goods_name price goods_count

первый запрос select * from goods - получили список товаров.. второй запрос select sum(price*goods_count) from goods  - получили полную стоимость всех товаров.  Если ты будешь выполнять эти запросы в read_commited - транзакции и между первым и вторым запросом будет вставлена новая запись в таблицу goods, то у тя получиться несогласованный отчет
например

select * from goods
результат
id goods_name price goods_count
0  кукла      10    5
1  пиво       5     2


тут другой юзер вставляет запись
2  водка      20    3

теперь ты выполняешь запрос
select sum(price*goods_count) from goods - получаешь 120 <> 10*5+5*2 - неправельный отчет.


 
msguns ©   (2004-10-21 10:01) [12]

И еще замечание.
По умолчанию в IBX используется опция SNAPSHOT, хотя нигде явно это не написано. Поэтому я, к примеру, в свое время хорошо поломал свою голову (и вылил грязи на бедных Вострикова с Ковязиным, которые, кстати, почти не уделили в своей книги внимания палитре IBX), т.к. при использовании неск.транзакций изменения, сделанные в одной таблице (например, справочнике), никак не хотели "показываться" при изменении другой таблицы (например, документов, имеющую ссылку на этот справочник). И вот только после штудирования статьи на ibase.ru я нашел ответы. В результате я принял такую схему (фрагмент датамодуля одного из простеньких проектов):

{ Модель доступа к БД "КНИГИ" использует следующие таблицы БД и транзакции:
 - Справочник издательств (поставщиков)   DR_PUB
 - Справочник магазинов розницы (получателей) DR_SHOP
 - Справочник изданий (книг) DR_BOOK
 - Справочник разделов литературы DR_PART
 - Прих.накладные. (Инвойсы) Заголовки
 - Прих.накладные. (Инвойсы) Фактура
 Использование транзакций:
 1. На справочники, открываемые поочередно (т.е. за раз может быть
   открыт для просмотра/модификации только один справочник) используется
   кратковременная транзакция trReWrSpr, в контексте которой данные
   справочника могут быть извлечены или изменены.
      Режимы работы:
      - транзакция стартует при открытии справочника и завершается
        при его закрытии.
      - при модификации справочника для транзакции используется метод Commit или
        Rollback с последующем переоткрытием справочника
      - редактирование справочников выполняется через не DB-aware контролы с
        последующей отменой или подтверждением изменений. Модификация непосре-
        дственно в таблице выполняется динамически создаваемым объектом
        класса TIBSQL в контексте той же (trReWrSpr), после чего делается
        Commit/Rollback с переоткрытием справочника и его перечиткой.
      Параметры транзакции:
        Write
        Nowait
        Concurrency
 2. Для доступа к инвойсам (как к заголовкам, так и к фактурам) используется
      две транзакции:
        На изменение (trWriteDok) - для одиночных (TIBSQL) запросов на вставку/
           изменение/удаление записей с параметрами:
               Write
               NoWait
               Concurrency
           после модификаций делаются переоткрытия (перечитки) соответствующих НД.    
        ПРИМЕЧАНИЕ: перед модификацией следует делает перечитку этой записи во
                    избежание конфликтов.
        Для чтения данных в режиме "долгоиграющего открытия НД" используется
           транзакция trReadDok с параметрами:
               Read
               Read_Commited
               Rec_Version
               NoWait
        ПРМЕЧАНИЕ: при переоткрытиях НД в рамках этой транзакции всегда дается
                   CommitRetain



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

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

Наверх





Память: 0.5 MB
Время: 0.042 c
3-1098350384
Samick
2004-10-21 13:19
2004.11.21
чтобы при вводе в Edit1 допустим букву "А"


1-1099477729
YeasU
2004-11-03 13:28
2004.11.21
Почему StrLen(PChar(Str:string)) возвращает 0 ?


10-1065133576
s_g
2003-10-03 02:26
2004.11.21
Мастера, подскажите интерфейс


14-1099590506
ИМХО
2004-11-04 20:48
2004.11.21
Ясер Арафат is dead


1-1099939597
lomman
2004-11-08 21:46
2004.11.21
TWebBrowser





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