         }
     
     This method is not reentrant: you can't nest transactions.
+    
+    **Warning**: The *db* parameter of the block should not be used outside of
+    the transaction block. Do not extract it, and do not store it in another
+    object that lives longer than the block:
+    
+        var database: Database?
+        try dbQueue.inTransaction { db in
+            database = db
+        }
+        database!.fetch(...) // NOT OK
     
     - parameter type:  The transaction type (default Exclusive)
                        See https://www.sqlite.org/lang_transaction.html

    
    This method is reentrant.
    
    - parameter block: A block that accesses the databse.
    - throws: The error thrown by the block.
    */
    public func inDatabase<R>(block: (db: Database) throws -> R) rethrows -> R {

    
    This method is reentrant.
    
    **Warning**: The *db* parameter of the block should not be used outside of
    the block. Do not extract it, and do not store it in another object that
    lives longer than the block:
    
        var database: Database?
        dbQueue.inDatabase { db in
            database = db
        }
        database!.fetch(...) // NOT OK
    
    - parameter block: A block that accesses the database.
    - throws: The error thrown by the block.
    */
    public func inDatabase(block: (db: Database) throws -> Void) rethrows {
