Implements

Constructors

Properties

#private: any

Methods

  • Simply calls the provided function passing this as the only argument. $call returns what the provided function returns.

    Type Parameters

    • T

    Parameters

    • func: ((qb) => T)
        • (qb): T
        • Parameters

          • qb: this

          Returns T

    Returns T

  • Adds auto_increment or autoincrement to the column definition depending on the dialect.

    Some dialects like PostgreSQL don't support this. On PostgreSQL you can use the serial or bigserial data type instead.

    Returns ColumnDefinitionBuilder

  • Adds a check constraint for the column.

    Examples

    importsql } from 'kysely'

    db.schema
    .createTable('pet')
    .addColumn('number_of_legs', 'integer', (col) =>
    col.check(sql`number_of_legs < 5`)
    )
    .execute()

    Parameters

    Returns ColumnDefinitionBuilder

  • Adds a default value constraint for the column.

    Examples

    db.schema
    .createTable('pet')
    .addColumn('number_of_legs', 'integer', (col) => col.defaultTo(4))
    .execute()

    Values passed to defaultTo are interpreted as value literals by default. You can define an arbitrary SQL expression using the sql template tag:

    importsql } from 'kysely'

    db.schema
    .createTable('pet')
    .addColumn(
    'number_of_legs',
    'integer',
    (col) => col.defaultTo(sql`any SQL here`)
    )
    .execute()

    Parameters

    • value: unknown

    Returns ColumnDefinitionBuilder

  • Makes the column a generated column using a generated always as statement.

    Examples

    importsql } from 'kysely'

    db.schema
    .createTable('person')
    .addColumn('full_name', 'varchar(255)',
    (col) => col.generatedAlwaysAs(sql`concat(first_name, ' ', last_name)`)
    )
    .execute()

    Parameters

    Returns ColumnDefinitionBuilder

  • Adds the generated always as identity specifier.

    This only works on some dialects like PostgreSQL.

    For MS SQL Server (MSSQL)'s identity column use identity.

    Returns ColumnDefinitionBuilder

  • Adds the generated by default as identity specifier on supported dialects.

    Returns ColumnDefinitionBuilder

  • Makes the column an identity column.

    This only works on some dialects like MS SQL Server (MSSQL).

    For PostgreSQL's generated always as identity use generatedAlwaysAsIdentity.

    Returns ColumnDefinitionBuilder

  • This can be used to add any additional SQL to the end of the column definition.

    Examples

    db.schema.createTable('person')
    .addColumn('id', 'integer', col => col.primaryKey())
    .addColumn('age', 'integer', col => col.unsigned().notNull().modifyEnd(sql`comment ${sql.lit('it is not polite to ask a woman her age')}`))
    .execute()

    The generated SQL (MySQL):

    create table `person` (
    `id` integer primary key,
    `age` integer unsigned not null comment 'it is not polite to ask a woman her age'
    )

    Parameters

    Returns ColumnDefinitionBuilder

  • This can be used to add any additional SQL right after the column's data type.

    Examples

    db.schema.createTable('person')
    .addColumn('id', 'integer', col => col.primaryKey())
    .addColumn('first_name', 'varchar(36)', col => col.modifyFront(sql`collate utf8mb4_general_ci`).notNull())
    .execute()

    The generated SQL (MySQL):

    create table `person` (
    `id` integer primary key,
    `first_name` varchar(36) collate utf8mb4_general_ci not null
    )

    Parameters

    Returns ColumnDefinitionBuilder

  • Adds a not null constraint for the column.

    Returns ColumnDefinitionBuilder

  • Adds nulls not distinct specifier. Should be used with unique constraint.

    This only works on some dialects like PostgreSQL.

    Examples

    db.schema.createTable('person')
    .addColumn('id', 'integer', col => col.primaryKey())
    .addColumn('first_name', 'varchar(30)', col => col.unique().nullsNotDistinct())
    .execute()

    The generated SQL (PostgreSQL):

    create table "person" (
    "id" integer primary key,
    "first_name" varchar(30) unique nulls not distinct
    )

    Returns ColumnDefinitionBuilder

  • Adds an on delete constraint for the foreign key column.

    If your database engine doesn't support foreign key constraints in the column definition (like MySQL 5) you need to call the table level CreateTableBuilder.addForeignKeyConstraint method instead.

    Examples

    col.references('person.id').onDelete('cascade')
    

    Parameters

    • onDelete: "no action" | "restrict" | "cascade" | "set null" | "set default"

    Returns ColumnDefinitionBuilder

  • Adds an on update constraint for the foreign key column.

    Examples

    col.references('person.id').onUpdate('cascade')
    

    Parameters

    • onUpdate: "no action" | "restrict" | "cascade" | "set null" | "set default"

    Returns ColumnDefinitionBuilder

  • Adds a foreign key constraint for the column.

    If your database engine doesn't support foreign key constraints in the column definition (like MySQL 5) you need to call the table level CreateTableBuilder.addForeignKeyConstraint method instead.

    Examples

    col.references('person.id')
    

    Parameters

    • ref: string

    Returns ColumnDefinitionBuilder

  • Makes a generated column stored instead of virtual. This method can only be used with generatedAlwaysAs

    Examples

    db.schema
    .createTable('person')
    .addColumn('full_name', 'varchar(255)', (col) => col
    .generatedAlwaysAs("concat(first_name, ' ', last_name)")
    .stored()
    )
    .execute()

    Returns ColumnDefinitionBuilder

  • Adds a unique constraint for the column.

    Returns ColumnDefinitionBuilder

  • Adds a unsigned modifier for the column.

    This only works on some dialects like MySQL.

    Returns ColumnDefinitionBuilder