Skip to main content
The CHECK specifies that values for the column in or statements must return TRUE or NULL for a Boolean expression. If any values return FALSE, the entire statement is rejected.

Details

  • You can specify CHECK constraints at the column or table level and can reference other columns within the table. Internally, all column-level CHECK constraints are converted to table-level constraints so they can be handled consistently.
  • You can add CHECK constraints to columns that were created earlier in the same transaction. For an example, see .
  • You can have multiple CHECK constraints on a single column but for performance optimization you should combine them using logical operators. For example, you should specify:
    as:
  • When you drop a column with a CHECK constraint, the CHECK constraint is also dropped.

Syntax

You can define CHECK constraints at the column level, where the constraint applies only to a single column, and at the table level. You can also add CHECK constraints to a table using .

Column level

check_column_level syntax diagram
ParameterDescription
table\_nameThe name of the table you’re creating.
column\_nameThe name of the constrained column.
column\_typeThe constrained column’s .
check\_exprAn expression that returns a Boolean value; if the expression evaluates to FALSE, the value cannot be inserted.
column\_constraintsAny other column-level you want to apply to this column.
column\_defDefinitions for any other columns in the table.
table\_constraintsAny table-level you want to apply.

Example

The following example specifies the column-level CHECK constraint that a quantity_on_hand value must be greater than 0.

Table level

check_table_level syntax diagram
ParameterDescription
table\_nameThe name of the table you’re creating.
column\_defDefinitions for any other columns in the table.
constraint\_nameThe name to use for the constraint, which must be unique to its table and follow these .
check\_exprAn expression that returns a Boolean value. If the expression evaluates to FALSE, the value cannot be inserted.
table\_constraintsAny other table-level to apply.

Example

The following example specifies the table-level CHECK constraint named ok_to_supply that a quantity_on_hand value must be greater than 0 and a warehouse_id must be between 100 and 200.

Usage example

The following example demonstrates that when you specify the CHECK constraint that a quantity_on_hand value must be greater than 0, and you attempt to insert the value 0, CockroachDB returns an error.

See also