Skip to content

Column

Defines a column in a table

Properties

Property Type Required Description
name string yes The column name.
data_type string yes The column data type.
nullable boolean Column is NULLABLE when True. Defaults to True. Default: true.
not_null_constraint object The parts of the column's NOT NULL constraint that nullable cannot express (PostgreSQL 18 and later, where NOT NULL is a named constraint). Present only when the name is not the one PostgreSQL generates, <table>_<column>_not_null, or when the constraint is NO INHERIT. nullable stays authoritative for whether the constraint exists at all.
default boolean | integer | number | string Default value for the column.
collation string Assigns a collation to the column (which must be of a collatable data type). If not specified, the column data type's default collation is used.
check_constraint string Specifies an expression producing a Boolean result which new or updated rows must satisfy for an insert or update operation to succeed.
generated object Options for specifying a generated column.
storage PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT How the column's values are stored (SET STORAGE), when it differs from the type's default.
compression string The compression method for the column's values (SET COMPRESSION).
statistics integer The column's statistics target (SET STATISTICS).
options object Per-column options such as n_distinct (ALTER COLUMN ... SET (...)).
comment string An optional comment about the column.

not_null_constraint

The parts of the column's NOT NULL constraint that nullable cannot express (PostgreSQL 18 and later, where NOT NULL is a named constraint). Present only when the name is not the one PostgreSQL generates, <table>_<column>_not_null, or when the constraint is NO INHERIT. nullable stays authoritative for whether the constraint exists at all.

Property Type Required Description
name string
no_inherit boolean Whether the constraint is not inherited by this table's descendants.

generated

Options for specifying a generated column

Property Type Required Description
expression string The expression used to generate the column. Mutually exclusive with the sequence column.
kind stored | virtual Whether the expression is materialized on write (stored) or evaluated on read (virtual). PostgreSQL 18 makes virtual the default and pg_dump omits the keyword for a virtual column, so the kind is recorded rather than assumed. An absent value means stored, which is what project files written before this attribute existed have always built.
sequence Specifies that the generated column value is provided by a sequence. Mutually exclusive with the expression attribute.
sequence_behavior ALWAYS | BY DEFAULT The clauses ALWAYS and BY DEFAULT determine how the sequence value is given precedence over a user-specified value in an INSERT statement. If ALWAYS is specified, a user-specified value is only accepted if the INSERT statement specifies OVERRIDING SYSTEM VALUE. If BY DEFAULT is specified, then the user-specified value takes precedence.
sequence_options object The options of an identity column's own sequence. Each is omitted when it holds PostgreSQL's default, so an identity that states none is an ordinary one starting at 1. Distinct from sequence, which names a sequence managed as its own object and is not rendered.

Mutually exclusive forms

Exactly one of these must hold:

  • expression

No other properties are accepted.


Source: schemata/column.yml · Resolved JSON Schema: column.json