powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Транзакции и SQLite.
7 сообщений из 7, страница 1 из 1
Транзакции и SQLite.
    #36107000
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите: можно ли внести данные в несколько Баз SQLite в контексте одной транзакции ???
...
Рейтинг: 0 / 0
Транзакции и SQLite.
    #36107028
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
potkinПодскажите: можно ли внести данные в несколько Баз SQLite в контексте одной транзакции ???

RTFM. Краткий ответ - да, можно. Подсказка - если основная база в памяти, возможны неприятности.
...
Рейтинг: 0 / 0
Транзакции и SQLite.
    #36107744
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBGpotkinПодскажите: можно ли внести данные в несколько Баз SQLite в контексте одной транзакции ???

RTFM. Краткий ответ - да, можно. Подсказка - если основная база в памяти, возможны неприятности.

да? и как же?
...
Рейтинг: 0 / 0
Транзакции и SQLite.
    #36108261
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоже интерестно. Так как Транзакция "привязана" с соединению, а соединится (SQliteConnection) можно только с одной БД. Или я не прав ???
Помогите, если не в лом ...
...
Рейтинг: 0 / 0
Транзакции и SQLite.
    #36108315
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
potkinТоже интерестно. Так как Транзакция "привязана" с соединению, а соединится (SQliteConnection) можно только с одной БД. Или я не прав ???
Помогите, если не в лом ...

Ошибаетесь в исходных предпосылках -транзакция не привязана к соединению. См.
http://www.sqlite.org/atomiccommit.html

В частности,
5.0 Multi-file Commit
SQLite allows a single database connection to talk to two or more database files simultaneously through the use of the ATTACH DATABASE command. When multiple database files are modified within a single transaction, all files are updated atomically. In other words, either all of the database files are updated or else none of them are. Achieving an atomic commit across multiple database files is more complex that doing so for a single file. This section describes how SQLite works that bit of magic.

Т.е. транзакция атомарна всегда, даже если затрагивает приаттаченные БД. Если будете читать внимательно, то найдете и то, что я написал выше как подсказку.
...
Рейтинг: 0 / 0
Транзакции и SQLite.
    #36108540
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На СШарпе так
Провайдер: "Finisar"

Код: plaintext
1.
2.
3.
4.
5.
6.
 SQLiteConnection con_SQLite_write = new SQLiteConnection("Data Source=DBFolder\zb.dat;New=False;Version=3;"); 
 con_SQLite_write.Open();
 using (SQLiteTransaction transSQLite = con_SQLite_write.BeginTransaction())
  {
    ...........
  }

Привязано к соединению. Может проблема в провайдере .....
...
Рейтинг: 0 / 0
Транзакции и SQLite.
    #36112006
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
potkinНа СШарпе так
Провайдер: "Finisar"

Код: plaintext
1.
2.
3.
4.
5.
6.
 SQLiteConnection con_SQLite_write = new SQLiteConnection("Data Source=DBFolder\zb.dat;New=False;Version=3;"); 
 con_SQLite_write.Open();
 using (SQLiteTransaction transSQLite = con_SQLite_write.BeginTransaction())
  {
    ...........
  }

Привязано к соединению. Может проблема в провайдере .....

В каком месте вы видите привязку к соединению?

Когда в одном соединении запущена транзакция, все прочие соединения увидят залоченную базу, т.е. транзакция существует для _всех_ соединений, а не только для того, в котором она выполняется - иными словами, транзакция привязана к БД (или набору БД - когда транзакции для каждой БД контролируются еще и совместно). Таким образом, все изменяемые в транзакции БД будут залочены для других соединений (и транзакций в них), что и гарантирует атомарность транзакции для _всех_ приаттаченных БД.

Кстати, временные таблицы/виды и проч. создаются в приаттаченной временной БД (может быть в памяти или на диске, так же как и любая другая БД). Но у вас почему-то не вызывает вопросов возможность транзакции изменять данные атомарно в основных и временных таблицах...

Рекомендую прочитать про Berkeley DB Environment
http://www.oracle.com/technology/documentation/berkeley-db/db/ref/env/intro.html
Фактически все СУБД основываются на одних и тех же принципах, только в сложных системах базовые идеи сложно увидеть сквозь наслоения различных интерфейсов.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Транзакции и SQLite.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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