> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cockroachlabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Default Value Constraint

The `DEFAULT` value [constraint](/docs/stable/constraints.md) specifies a value to write into the constrained column if one is not defined in an `INSERT` statement. The value may be either a hard-coded literal or an expression that is evaluated at the time the row is created.

## Details

* The [data type](/docs/stable/data-types.md) of the `DEFAULT` value must be the same as the data type of the column.
* The `DEFAULT` value constraint only applies if the column does not have a value specified in the [`INSERT`](/docs/stable/insert) statement. You can still insert a `NULL` into an optional (nullable) column by explicitly inserting `NULL`. For example, `INSERT INTO foo VALUES (1, NULL);`.

## Syntax

![default\_value\_column\_level syntax diagram](https://mintcdn.com/cockroachlabs/UZNSFbmU2EwEm6G5/images/sql-diagrams/common/default_value_column_level.svg?fit=max\&auto=format\&n=UZNSFbmU2EwEm6G5\&q=85\&s=7be09a0609f8e04df12ddf2b42245e06)

You can only apply the `DEFAULT` value constraint to individual columns.

> [!NOTE]
>
> You can also add the `DEFAULT` value constraint to an existing table through [`ALTER COLUMN`](/docs/stable/alter-table#set-or-change-a-default-value).

| Parameter | Description |
| - | - |
| `table_name` | The name of the table you're creating. |
| `column_name` | The name of the constrained column. |
| `column_type` | The constrained column's [data type](/docs/stable/data-types.md). |
| `default_value` | The value you want to insert by default, which must evaluate to the same [data type](/docs/stable/data-types.md) as the `column_type`. |
| `column_constraints` | Any other column-level [constraints](/docs/stable/constraints.md) you want to apply to this column. |
| `column_def` | Definitions for any other columns in the table. |
| `table_constraints` | Any table-level [constraints](/docs/stable/constraints.md) you want to apply. |

## Example

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> CREATE TABLE inventories (
    product_id        INT,
    warehouse_id      INT,
    quantity_on_hand  INT DEFAULT 100,
    PRIMARY KEY (product_id, warehouse_id)
  );
```

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> INSERT INTO inventories (product_id, warehouse_id) VALUES (1,20);
```

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> INSERT INTO inventories (product_id, warehouse_id, quantity_on_hand) VALUES (2,30, NULL);
```

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> SELECT * FROM inventories;
```

```
+------------+--------------+------------------+
| product_id | warehouse_id | quantity_on_hand |
+------------+--------------+------------------+
|          1 |           20 |              100 |
|          2 |           30 | NULL             |
+------------+--------------+------------------+
```

If the `DEFAULT` value constraint is not specified and an explicit value is not given, a value of `NULL` is assigned to the column.

## See also

* [Constraints](/docs/stable/constraints.md)
* [`ALTER COLUMN`](/docs/stable/alter-table#alter-column)
* [`CHECK` constraint](/docs/stable/check)
* [`REFERENCES` constraint (Foreign Key)](/docs/stable/foreign-key)
* [`NOT NULL` constraint](/docs/stable/not-null)
* [`PRIMARY KEY` constraint](/docs/stable/primary-key)
* [`UNIQUE` constraint](/docs/stable/unique)
* [`SHOW CONSTRAINTS`](/docs/stable/show-constraints)
