2009-05-28 2 views
3

Я пишу прототип приложения. В настоящее время некоторые вещи терпят неудачу, такие как вставка уникального столбца. В этом случае я хотел бы отменить все, что я сделал. Как мне это сделать? Я также замечаю, что в sqlite мне нужно зафиксировать данные, на C#, похоже, это делается автоматически, что заставляет меня подозревать, что есть опция автоматического отката?транзакционный sqlite? в C#

ответ

12

Откат: Похоже, что вы ищете является текст команды «INSERT OR ROLLBACK ...»

Сделка: SQLite автоматически помещает каждую команду в своей собственной транзакции, если вы специально не оговорено, когда начать , EDIT: TML объясняет эту часть немного более глубоко в своем ответе

пример явного открытия/совершение сделки является:

using (DbTransaction dbTrans = myDBConnection.BeginTransaction()) 
{ 
    using (DbCommand cmd = myDBConnection.CreateCommand()) 
    { 
     ... 
    } 
    dbTrans.Commit(); 
} 
4

SQLite.org говорит:

Изменения в замок и управления параллелизмом в SQLite версии 3 также ввести некоторые тонкие изменения в образом транзакции работают на уровне языка SQL . По умолчанию SQLite версии 3 работает в автоматическом режиме. В режиме autocommit все изменения в базе данных фиксируются, как только все операции связаны с текущим подключением базы данных .

Команда SQL "BEGIN TRANSACTION" (Сделка необязательное ключевое слово) используются для отбора SQLite из режима автоматической фиксации. Обратите внимание, что команда BEGIN не получает никаких блокировок в базе данных . После команды BEGIN блокировка SHARED будет получена, когда выполняется первый оператор SELECT 10. A ЗАПИСЬ блокировки будет получена, когда выполняется инструкция INSERT, UPDATE или DELETE . Никакой ЭКСКЛЮЗИВ блокировка сохраняется до тех пор, пока кеш памяти не заполнится и должен быть разряжен на или до момента совершения транзакции . Таким образом, система задерживает блокировку доступа для чтения до файла файла до последнего возможного момента .

+0

да, SQLLite действительно заставляет вас использовать «транзакционные» запросы вместо плохая привычка посылать их один за другим. – djangofan

Смежные вопросы