TrEdit, nowait, Design

Обсуждение возникших проблем, предложений и ошибок UniDAC компонентов
Закрыто
Vlady
Сообщения: 8
Зарегистрирован: Пт 28 мар 2014 11:11

TrEdit, nowait, Design

Сообщение Vlady » Вт 03 мар 2015 06:32

как правильно в режиме дизайнера прописать параметры транзакции?
DefaultTransaction.SpecificOptions.Values['Params'] := 'wait'
DefaultTransaction.SpecificOptions.Values['Params'] := 'autocommit'
DefaultTransaction.SpecificOptions.Values['Params'] := 'read_committed'
http://forums.devart.com/viewtopic.php?f=28&t=25656

и какие рекомендуемые параметры для транзакции чтения/записи для firebird при использовании UniDac?

В Fib была такая рекомендация
http://www.devrace.com/en/fibplus/articles/479.php

И такое решение
object Tr: TpFIBTransaction
TRParams.Strings = (
'isc_tpb_read'
'isc_tpb_nowait'
'isc_tpb_read_committed'
'isc_tpb_rec_version')
end
object TrEdit: TpFIBTransaction
TRParams.Strings = (
'isc_tpb_write'
'isc_tpb_read_committed'
'isc_tpb_wait'
'isc_tpb_no_rec_version')
end

ViktorV
Devart Team
Сообщения: 212
Зарегистрирован: Чт 31 июл 2014 09:52

Re: TrEdit, nowait, Design

Сообщение ViktorV » Вт 03 мар 2015 09:38

Вы можете разделить параметры транзакции с помощью символов #13#10, либо с помощью точки с запятой:

Код: Выделить всё

DefaultTransaction.SpecificOptions.Values['Params'] := 'wait' + #13#10 + 'read_committed' + #13#10 + 'rec_version';
или

Код: Выделить всё

DefaultTransaction.SpecificOptions.Values['Params'] := 'wait;read_committed;rec_version';
Обратите внимание, что для установки произвольных параметров транзакции, Вам необходимо установить свойство DefaultTransaction.IsolationLevel в ilCustom.
Также, с помощью свойства DefaultTransaction.IsolationLevel Вы можете установить один из стандартных уровней изоляции транзакции. Детальную информацию об уровнях изоляции транзакций в Firebird вы можете получить в официальной документации: http://www.firebirdsql.org/manual/isql- ... tions.html.

Vlady
Сообщения: 8
Зарегистрирован: Пт 28 мар 2014 11:11

Re: TrEdit, nowait, Design

Сообщение Vlady » Чт 05 мар 2015 03:45

где я могу прочитать как бъётся в параметры Firebird значение IsolationLevel и другие параметры транзакции (ReadOnly например)?

ViktorV
Devart Team
Сообщения: 212
Зарегистрирован: Чт 31 июл 2014 09:52

Re: TrEdit, nowait, Design

Сообщение ViktorV » Чт 05 мар 2015 08:44

Информацию о параметрах транзакции Вы можете получить в документации InterBase 6.0 API Guide( http://www.firebirdsql.org/en/reference-manuals , раздел InterBase 6.0 Manuals)

Vlady
Сообщения: 8
Зарегистрирован: Пт 28 мар 2014 11:11

Re: TrEdit, nowait, Design

Сообщение Vlady » Чт 05 мар 2015 09:19

Виктор, добрый день.
Переформулирую вопрос:
Я бы хотел понять, что именно отправляется UDIDAC когда DefaultTransaction.IsolationLevel <> ilCustom.
При этом это сделать из документации, а не кода/теста. Это возможно?

ViktorV
Devart Team
Сообщения: 212
Зарегистрирован: Чт 31 июл 2014 09:52

Re: TrEdit, nowait, Design

Сообщение ViktorV » Чт 05 мар 2015 12:04

В зависимости от значения DefaultTransaction.IsolationLevel устанавливаются следующие комбинации параметров транзакции:

Код: Выделить всё

DefaultTransaction.IsolationLevel = ilSnapshot:
  isc_tpb_concurrency
  isc_tpb_nowait
  isc_tpb_write
DefaultTransaction.IsolationLevel = ilReadCommitted:
  isc_tpb_read_committed
  isc_tpb_rec_version
  isc_tpb_nowait
  isc_tpb_write
DefaultTransaction.IsolationLevel = ilIsolated:
  isc_tpb_consistency;
  isc_tpb_write

Vlady
Сообщения: 8
Зарегистрирован: Пт 28 мар 2014 11:11

Re: TrEdit, nowait, Design

Сообщение Vlady » Чт 05 мар 2015 18:10

т.е. параметр ReadOnly транзакции не учитывается?

Vlady
Сообщения: 8
Зарегистрирован: Пт 28 мар 2014 11:11

Re: TrEdit, nowait, Design

Сообщение Vlady » Чт 05 мар 2015 18:17

Как итог (вдруг кому пригодится):
Собственно нашёл 2 документа по которым проставлял параметры транзакций когда начинал писать на fibplus
http://www.ibase.ru/devinfo/ibtrans.htm
http://www.devrace.com/ru/fibplus/articles/2167.php

В конвертированном приложении на UniDAC прописал
nowait;read_committed;rec_version;read - для читающей трензакции
wait;read_committed;rec_version;write - для пишущей или делающей то и другое.

Впереди - заставить это же приложение работать с Oracle и PostgreSQL

ViktorV
Devart Team
Сообщения: 212
Зарегистрирован: Чт 31 июл 2014 09:52

Re: TrEdit, nowait, Design

Сообщение ViktorV » Пт 06 мар 2015 06:55

Поскольку UniDAC является универсальным набором компонент, предназначенным для работы с различными СУБД, свойство TUniTransaction.IsolationLevel предусматривает установку уровней изоляции транзакции, общих для различных СУБД. Для установки параметров транзакции, специфичных для определенной СУБД, как в Вашем случае, и предусмотрен уровень ilCustom.

Закрыто