title: System.Data.SQLite Not Supporting Multiple Transactions
body: <p>So I am having an interesting issue with System.Data.SQLite and using multiple transactions. Basically  I have the following code which fails:</p>
  
  <pre><code>using (IDbConnection connection1 = new SQLiteConnection("connectionstring"), connection2 = new SQLiteConnection("connectionstring"))
  {
      connection1.Open();
      connection2.Open();
  
      IDbTransaction transaction1 = connection1.BeginTransaction();
      IDbTransaction transaction2 = connection2.BeginTransaction();    // Fails!
  
      using(IDbCommand command = new SQLiteCommand())
      {
          command.Text = "CREATE TABLE artist(artistid int, artistname text);";
          command.CommandType = CommandType.Text;
          command.Connection = connection1;
          command.ExecuteNonQuery();
      }
  
      using (IDbCommand command = new SQLiteCommand())
      {
          command.Text = "CREATE TABLE track(trackid int, trackname text);";
          command.CommandType = CommandType.Text;
          command.Connection = connection2;                    
          command.ExecuteNonQuery();
      }
  
      transaction1.Commit();
      transaction2.Commit();
  
  }
  </code></pre>
  
  <p>From what I've read it seems that System.Data.SQLite should support nested and by extension sequential transactions. The code fails on line 7 (where the second transaction is declared) with the following exception:</p>
  
  <pre><code>System.Data.SQLite.SQLiteException: The database file is locked
  
  System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
  System.Data.SQLite.SQLiteDataReader.NextResult()
  System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
  System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
  System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
  System.Data.SQLite.SQLiteTransaction..ctor(SQLiteConnection connection, Boolean deferredLock)
  System.Data.SQLite.SQLiteConnection.BeginDbTransaction(IsolationLevel isolationLevel)
  System.Data.Common.DbConnection.System.Data.IDbConnection.BeginTransaction()
  </code></pre>
  
  <p>Does anyone know what the issue is or how to get around this? I feel having concurrent transactions is essential for any database system so there must be some way to do this.</p>
  
  <p>Thanks!</p>