Skip to content
On this page

@validate

Column-level validation constraints plus documentation and schema linting

Postgres Mysql (beta) Sqlite (beta) Mssql

Example

Add validation constraints

Validation tags emit check constraints when the engine supports them and always enrich docs metadata.

Input SQL
sql
CREATE TABLE products (
  id SERIAL PRIMARY KEY,
  -- @validate.notEmpty
  name TEXT NOT NULL,
  -- @validate.range(min: 0, max: 99999)
  price NUMERIC(10,2) NOT NULL
);
Compiled Output
sql
ALTER TABLE "products" ADD CONSTRAINT "products_name_not_empty" CHECK (length(trim("name")) > 0);
ALTER TABLE "products" ADD CONSTRAINT "products_price_range" CHECK ("price" >= 0 AND "price" <= 99999);

Tags

@validate.check

Add a CHECK constraint with a custom expression

Targets: column

Arguments:

NameTypeRequiredValues
positionalstringYes

@validate.notEmpty

Add a CHECK constraint ensuring the column is not empty (length(trim(col)) > 0)

Targets: column

Arguments: No arguments.

@validate.range

Add a CHECK constraint ensuring the column value is within a numeric range

Targets: column

Arguments:

NameTypeRequiredValues
minnumberYes
maxnumberYes

@validate.length

Add a CHECK constraint on string length

Targets: column

Arguments:

NameTypeRequiredValues
minnumberNo
maxnumberNo

@validate.pattern

Add a CHECK constraint using a regex pattern (~ for Postgres, REGEXP for MySQL)

Targets: column

Arguments:Positional: string

Lint Rules

validate.require-pk

Tables should have a primary key

Default severity: warn