Prevent Empty Strings in Postgres

A common data consistency issue is writing empty strings to the database. An empty string "" is a perfectly valid text or varchar but is usually not what you want.

Thankfully, Postgres has a way of checking for empty strings that prevent storing bad data. A domain is a reusable way to check a value that looks like this:

create domain content as text check (value != '');

This can be used as the column type when creating a table:

create table posts (
    id         serial       primary key,
    title      content      not null,
);

Now you’ll get a friendly error if you try to save an empty string. If you are using SQLAlchemy, you can specify a database model using a domain too.

Read Check data easily with PostgreSQL domains by Benjamin Sago.

See also: