powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / снапшот транзакция для execute statement
15 сообщений из 15, страница 1 из 1
снапшот транзакция для execute statement
    #39830310
vvvait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FB 2.5.8 SS

есть длительная процедура по переносу данных из резервной БД в основную, выполняемая в snapshot транзакции, в конце которой в execute statement очищаются переданные таблицы. Параллельно ей, в эти таблицы данные добавляются. Могут ли удалиться данные добавленный после старта транзакции? (Судя по доке для execute statement может стартовать отдельная транзакция)
...
Рейтинг: 0 / 0
снапшот транзакция для execute statement
    #39830318
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
25.06.2019 13:15, vvvait пишет:
> для execute statement может стартовать отдельная транзакция

только если ты сам этого захочешь
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
снапшот транзакция для execute statement
    #39830320
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vvvait,


EXECUTE STATEMENT
Насколько я понимаю написанное

Description: Traditionally, the executed SQL statement always ran within the current transaction, and this is still the default. WITH AUTONOMOUS TRANSACTION causes a separate transaction to be started, with the same parameters as the current transaction. It will be committed if the statement runs to completion without errors and rolled back otherwise. WITH COMMON TRANSACTION uses the current transaction if possible. If the statement must run in a separate connection, an already started transaction within that connection is used, if available. Otherwise, a new transaction is started with the same parameters as the current transaction. Any new transactions started under the “COMMON” regime are committed or rolled back with the current transaction.

то волноваться не стоит
...
Рейтинг: 0 / 0
снапшот транзакция для execute statement
    #39830324
vvvait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
по умолчанию какая транзакция используется ?

WITH COMMON TRANSACTION uses the current transaction if possible
...
Рейтинг: 0 / 0
снапшот транзакция для execute statement
    #39830352
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vvvait,

читай doc\sql.extensions\README.execute_statement2
...
Рейтинг: 0 / 0
снапшот транзакция для execute statement
    #39830373
vvvait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvlad,

a) started new transaction with the same parameters as current transaction, or
b) used already started transaction in this connection, or
c) used current transaction if current connection is used.

- by default COMMON TRANSACTION is used

Вопрос остаётся. если для выполнения очистки стартует новая транзакция, увидит ли она добавленные в других коннектах записи?
...
Рейтинг: 0 / 0
снапшот транзакция для execute statement
    #39830378
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vvvaitесли для выполнения очистки стартует новая транзакция, увидит ли она добавленные в других коннектах записи?Если это тр-ция snapshot, то конечно же не увидит.

Проверить самому не легче\быстрее, чем тут очевидных ответов ждать ?
...
Рейтинг: 0 / 0
снапшот транзакция для execute statement
    #39830429
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vvvait,

Traditionally, the executed SQL statement always ran within the current transaction, and this is still the default.

Не пиши никакого with (ни common, ни autonomous), и будет эта же самая транзакция.
...
Рейтинг: 0 / 0
снапшот транзакция для execute statement
    #39830432
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vvvait,

мне интересно, зачем читать по английски, если исходно документация на русском языке?
http://www.ibase.ru/files/firebird/langref25rus/index.html#d0e23199
...
Рейтинг: 0 / 0
снапшот транзакция для execute statement
    #39830448
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

Ну так гугл на поиск "execute statement firebird" первые же ссылки на firebirdsql.org
...
Рейтинг: 0 / 0
снапшот транзакция для execute statement
    #39830451
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
25.06.2019 17:36, m7m пишет:
> Ну так гугл на поиск...

а ты не пользуй сионистский гугель.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
снапшот транзакция для execute statement
    #39830455
vvvait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С причиной потерянных записей я разобрался, оказалось что один "хороший" человек использовал TpFIBTransaction вместо TFIBTransaction как везде. У неё снапшот устанавливается через TPBMode, а не через TRParams, поэтому вместо снапшота был read_commited. Пришлось в процедуру добавить проверку, что транзакция snapshot.

С предложением WITH COMMON TRANSACTION по возможности используется текущая транзакция.

тут не понятно, при каких условиях будет запущена новая транзакция, и если она будет запущена на 10 минут позже основной, будет ли она также не видеть добавленные записи.
...
Рейтинг: 0 / 0
снапшот транзакция для execute statement
    #39830472
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vvvait,

причём тут раньше-позже? Это предложение относится скорее всего к специальным операторам и EXTERNAL DATA SOURCE. При запуске обычных DML с текущей БД и под текущим пользователем без предложения WITH AUTONOMOUS TRANSACTION всегда будет выполняться в текущей транзакции.
...
Рейтинг: 0 / 0
снапшот транзакция для execute statement
    #39830474
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А "назачем там нужен execute statement" так никто и не спросит?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
снапшот транзакция для execute statement
    #39830476
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
25.06.2019 18:46, Dimitry Sibiryakov пишет:
> А "назачем там нужен execute statement" так никто и не спросит?..

подозреваю "обобщенный решатель задач", с динамическим формированием SQL
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / снапшот транзакция для execute statement
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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