Available in versions: Dev (3.20) | Latest (3.19) | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11 | 3.10

Defaults

Applies to ✅ Open Source Edition   ✅ Express Edition   ✅ Professional Edition   ✅ Enterprise Edition

The DEFAULT expression on a column definition defines what value the column should contain if it is omitted in an INSERT statement, or if an explicit DEFAULT expression is used in INSERT or UPDATE. By default, this is NULL in most dialects

// Create a new table with a column with a default expression
create.createTable("table")
      .column("column1", INTEGER.default_(1))
      .execute();

To trigger this DEFAULT expression, you can run this, for example:

// Insert a row using the default expression
create.insertInto(table(name("table"))).defaultValues().execute();

Dialect support

This example using jOOQ:

createTable("table")
      .column("column1", INTEGER.default_(1))

Translates to the following dialect specific expressions:

Access, DB2, Firebird, Hana, Informix, Teradata

CREATE TABLE table (
  column1 integer DEFAULT 1
)

ASE

CREATE TABLE table (
  column1 int DEFAULT 1 NULL
)

Aurora MySQL, Aurora Postgres, Derby, DuckDB, Exasol, H2, HSQLDB, MariaDB, MemSQL, MySQL, Postgres, Redshift, SQLDataWarehouse, SQLServer, Vertica, YugabyteDB

CREATE TABLE table (
  column1 int DEFAULT 1
)

BigQuery

CREATE TABLE table (
  column1 int64 DEFAULT 1
)

ClickHouse

CREATE TABLE table (
  column1 Nullable(integer) DEFAULT 1
)
ENGINE Log()

CockroachDB

CREATE TABLE table (
  column1 int4 DEFAULT 1
)

Oracle, Snowflake

CREATE TABLE table (
  column1 number(10) DEFAULT 1
)

SQLite

CREATE TABLE "table" (
  column1 int DEFAULT (1)
)

Sybase

CREATE TABLE table (
  column1 int NULL DEFAULT 1
)

Trino

/* UNSUPPORTED */

(These are currently generated with jOOQ 3.20, see #10141), or translate your own on our website

References to this page

Feedback

Do you have any feedback about this page? We'd love to hear it!

The jOOQ Logo