TableAlteration
public final class TableAlteration
The TableAlteration class lets you alter database tables.
You don’t create instances of this class. Instead, you use the Database
alter(table:)
method:
try db.alter(table: "player") { t in // t is TableAlteration
t.add(column: ...)
}
-
Appends a column to the table.
try db.alter(table: "player") { t in t.add(column: "url", .text) }
Declaration
Swift
@discardableResult public func add(column name: String, _ type: Database.ColumnType? = nil) -> ColumnDefinition
Parameters
name
the column name.
type
the column type.
Return Value
An ColumnDefinition that allows you to refine the column definition.
-
Appends a table column defined with raw SQL.
// ALTER TABLE player ADD COLUMN name TEXT try db.alter(table: "player") { t in t.addColumn(sql: "name TEXT") }
Declaration
Swift
public func addColumn(sql: String)
-
Appends a table column defined with an SQL literal.
Literals allow you to safely embed raw values in your SQL, without any risk of syntax errors or SQL injection:
// ALTER TABLE player ADD COLUMN name TEXT DEFAULT 'Anonymous' let defaultName = "Anonymous" try db.alter(table: "player") { t in t.addColumn(literal: "name TEXT DEFAULT \(defaultName)") }
Declaration
Swift
public func addColumn(literal: SQL)
-
Renames a column in a table.
try db.alter(table: "player") { t in t.rename(column: "url", to: "homeURL") }
-
Drops a column from the table.
try db.alter(table: "player") { t in t.drop(column: "age") }
-
Renames a column in a table.
try db.alter(table: "player") { t in t.rename(column: "url", to: "homeURL") }
Declaration
Swift
@available(iOS 13.0, tvOS 13.0, watchOS 6.0, *) public func rename(column name: String, to newName: String)
Parameters
name
the column name to rename.
newName
the new name of the column.
-
Drops a column from the table.
try db.alter(table: "player") { t in t.drop(column: "age") }
Declaration
Swift
@available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) public func drop(column name: String)
Parameters
name
the column name to drop.