27.10.2021

CHECK Constraints in Postgres

CHECK Constraints sind eine coole Möglichkeit um Domainbeschränkungen auf Datenbankebene abzubilden.

Z.B. kann man dafür sorgen dass ein Produkt immer einen positiven Preis hat:

CREATE TABLE products (
    product_no integer,
    name text,
    price numeric CHECK (price > 0)
);

Referenzierung von mehreren Columns ist auch möglich:

CREATE TABLE products (
    product_no integer,
    name text,
    price numeric CHECK (price > 0),
    discounted_price numeric CHECK (discounted_price > 0),
    CHECK (price > discounted_price)
);

Man sollte allerdings keine CHECKSs auf andere Tabellen damit implementieren, das ist zwar generell möglich, Postgres kann hier aber keine Konsistenz garantieren, sodass die Datenbank u.U. in einen Zustand kommen kann bei dem man einen Datenbankdump nicht mehr importieren kann. Diese Constraints sollten als TRIGGER implementiert werden.

person
Hendrik

Softwareentwickler

Zur Übersicht

Standort Hannover

newcubator GmbH
Bödekerstraße 22
30161 Hannover

Standort Dortmund

newcubator GmbH
Westenhellweg 85-89
44137 Dortmund