PostgreSQL проверяет ограничение, если соответствующий столбец обнуляется

У меня есть определение таблицы ниже. Можно ли создать проверочное ограничение, при котором затронутый столбец может быть обнуляемым?

CREATE TABLE task (
    # other definition
    registered_date timestamp without time zone NOT NULL,
    completed_date timestamp without time zone
    # constraints
);

Я планировал провести проверку ограничений на completed_date так что входное значение не будет меньше registered_date, Это возможно?

1 ответ

Решение

Да. Проверочные ограничения принимают значения NULL автоматически. По документации:

Следует отметить, что проверочное ограничение выполняется, если проверочное выражение оценивается как истинное или нулевое значение. Поскольку большинство выражений будут иметь нулевое значение, если какой-либо операнд будет нулевым, они не будут предотвращать нулевые значения в ограниченных столбцах. Чтобы столбец не содержал пустых значений, можно использовать ограничение not-null, описанное в следующем разделе.

Жирный акцент мой.

Другие вопросы по тегам