     ///
     /// - parameter sql: An SQL snippet.
     /// - returns: Self so that you can further refine the column definition.
-    public func check(sql sql: String) -> SQLColumnBuilder {
+    public func check(sql sql: String) -> ColumnDefinition {
         checkExpression = _SQLExpression.Literal(sql, nil)
         return self
     }

    }
}

/// The SQLTableBuilder class lets you define table columns and constraints.
///
/// You don't create instances of this class. Instead, you use the Database
/// `create(table:)` method:
///
///     try db.create(table: "persons") { t in // t is SQLTableBuilder
///         t.column(...)
///     }
///
/// See https://www.sqlite.org/lang_createtable.html
public final class SQLTableBuilder {
    let name: String
    let temporary: Bool
    let ifNotExists: Bool
    let withoutRowID: Bool
    var columns: [SQLColumnBuilder] = []
    var primaryKeyConstraint: (columns: [String], conflictResolution: SQLConflictResolution?)?
    var uniqueKeyConstraints: [(columns: [String], conflictResolution: SQLConflictResolution?)] = []
    var foreignKeyConstraints: [(columns: [String], table: String, destinationColumns: [String]?, deleteAction: SQLForeignKeyAction?, updateAction: SQLForeignKeyAction?, deferred: Bool)] = []
    var checkConstraints: [_SQLExpression] = []
    
    init(name: String, temporary: Bool, ifNotExists: Bool, withoutRowID: Bool) {
        self.name = name

    ///
    /// - parameter sql: An SQL snippet.
    /// - returns: Self so that you can further refine the column definition.
    public func defaults(sql sql: String) -> ColumnDefinition {
        defaultExpression = _SQLExpression.Literal(sql, nil)
        return self
    }
