Available in versions: Dev (3.19) | Latest (3.18) | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11 | 3.10 | 3.9
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.defaultValue(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.defaultValue(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 ) -- 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.19, see #10141), or translate your own on our website
Feedback
Do you have any feedback about this page? We'd love to hear it!