ColumnInfo

public struct ColumnInfo : FetchableRecord

A column of a database table.

This type closely matches the information returned by the table_info pragma.

> CREATE TABLE player (
    id INTEGER PRIMARY KEY,
    firstName TEXT,
    lastName TEXT)
> PRAGMA table_info("player")
cid   name   type     notnull   dflt_value  pk
----  -----  -------  --------  ----------  ---
0     id     INTEGER  0         NULL        1
1     name   TEXT     0         NULL        0
2     score  INTEGER  0         NULL        0

See Database.columns(in:) and https://www.sqlite.org/pragma.html#pragma_table_info

  • The column name

    Declaration

    Swift

    public let name: String
  • The column data type

    Declaration

    Swift

    public let type: String
  • True if and only if the column is constrained to be not null.

    Declaration

    Swift

    public let isNotNull: Bool
  • The SQL snippet that defines the default value, if any.

    When nil, the column has no default value.

    When not nil, it contains an SQL string that defines an expression. That expression may be a literal, as 1, or 'foo'. It may also contain a non-constant expression such as CURRENT_TIMESTAMP.

    For example:

    try db.execute(sql: """
        CREATE TABLE player(
            id INTEGER PRIMARY KEY,
            name TEXT DEFAULT 'Anonymous',
            score INT DEFAULT 0,
            creationDate DATE DEFAULT CURRENT_TIMESTAMP
        )
        """)
    let columnInfos = try db.columns(in: "player")
    columnInfos[0].defaultValueSQL // nil
    columnInfos[1].defaultValueSQL // "'Anoynymous'"
    columnInfos[2].defaultValueSQL // "0"
    columnInfos[3].defaultValueSQL // "CURRENT_TIMESTAMP"
    

    Declaration

    Swift

    public let defaultValueSQL: String?
  • Zero for columns that are not part of the primary key.

    Before SQLite 3.7.16, it is 1 for columns that are part of the primary key.

    Starting from SQLite 3.7.16, it is the one-based index of the column in the primary key for columns that are part of the primary key.

    References:

    Declaration

    Swift

    public let primaryKeyIndex: Int