Skip to content
On this page

@validate

Postgres Mysql (beta)

Example

Input SQL
sql
CREATE TABLE products (
  id SERIAL PRIMARY KEY,
  -- @validate.notEmpty
  name VARCHAR(100) NOT NULL,
  -- @validate.range(min: 0, max: 99999)
  price NUMERIC(10,2) NOT NULL,
  -- @validate.pattern('^[A-Z]{3}-[0-9]{4}$')
  sku VARCHAR(20) NOT NULL,
  -- @validate.length(min: 10, max: 500)
  description TEXT
);
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);

ALTER TABLE "products"
  ADD CONSTRAINT "products_sku_pattern" CHECK ("sku" ~ '^[A-Z]{3}-[0-9]{4}$');

ALTER TABLE "products"
  ADD CONSTRAINT "products_description_length" CHECK (length("description") >= 10 AND length("description") <= 500);

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