         try deleteStatement.execute(bindings: bindings)
     }
     
-    // SELECT
+    /// SELECT
     func reloadStatement(db: Database) throws -> SelectStatement {
         // Fail early if databaseTable is nil (not overriden)
         guard let table = databaseTable else {

    
    // MARK: - CRUD
    
    /**
    Returns (rowIDColumn, insertedRowID) if the INSERT statement has
    generated a new SQLite rowID, and nil otherwise.
    */
    func insert(db: Database) throws -> (String, Int64)? {
        // Fail early if databaseTable is nil (not overriden)
        guard let table = databaseTable else {
            fatalError("Nil Table returned from \(rowModel.dynamicType).databaseTable")
        }
        
        // We need something to insert
        let insertedDic = storedDatabaseDictionary
        guard insertedDic.count > 0 else {
            fatalError("Invalid empty dictionary returned from \(rowModel.dynamicType).storedDatabaseDictionary")
        }
        
        // INSERT
        let insertStatement = try DataMapper.insertStatement(db, tableName: table.name, insertedColumns: Array(insertedDic.keys))
        let bindings = Bindings(insertedDic.values)
        let changes = try insertStatement.execute(bindings: bindings)
        
        // Update RowID column if needed
        guard let primaryKey = table.primaryKey else {
            return nil
        }
        switch primaryKey {
        case .RowID(let column):
            guard let currentID = storedDatabaseDictionary[column] else {
                fatalError("\(rowModel.dynamicType).storedDatabaseDictionary must return the value for the primary key `(column)`")
            }
            if let _ = currentID {
                // RowID is already set.
                return nil
            } else {
                // RowID is not set yet.
                let insertedRowID = changes.insertedRowID!
                
                // Tell RowModel
                return (column, insertedRowID)
            }
        default:
            return nil
        }
    }

            // RowNotFound when there is no matching row in the
            // database. I mean, consistency is important. So:
            
            let existsStatement = DataMapper.existsStatement(db, tableName: table.name, conditionColumns: Array(primaryKeyDictionary.keys))
            let row = existsStatement.fetchOneRow(bindings: Bindings(primaryKeyDictionary.values))
            guard row != nil else {
                throw DataMapperError.RowNotFound
            }
