Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Транзакции и SQLite. / 7 сообщений из 7, страница 1 из 1
24.07.2009, 09:45
    #36107000
potkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции и SQLite.
Подскажите: можно ли внести данные в несколько Баз SQLite в контексте одной транзакции ???
...
Рейтинг: 0 / 0
24.07.2009, 10:00
    #36107028
MBG
MBG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции и SQLite.
potkinПодскажите: можно ли внести данные в несколько Баз SQLite в контексте одной транзакции ???

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

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

да? и как же?
...
Рейтинг: 0 / 0
24.07.2009, 16:05
    #36108261
potkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции и SQLite.
Тоже интерестно. Так как Транзакция "привязана" с соединению, а соединится (SQliteConnection) можно только с одной БД. Или я не прав ???
Помогите, если не в лом ...
...
Рейтинг: 0 / 0
24.07.2009, 16:23
    #36108315
MBG
MBG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции и SQLite.
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
24.07.2009, 17:46
    #36108540
potkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции и SQLite.
На СШарпе так
Провайдер: "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
27.07.2009, 20:15
    #36112006
MBG
MBG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции и SQLite.
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
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Транзакции и SQLite. / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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