Значения по умолчанию

Столбцу может быть назначено значение по умолчанию. Когда создается новая строка и для некоторых столбцов не указаны значения, эти столбцы будут заполнены соответствующими значениями по умолчанию. Команда манипулирования данными тоже может явно запросить, чтобы для столбца было установлено значение по умолчанию, и ей необязательно знать, что это за значение. (Подробнее команды манипулирования данными рассматриваются в главе Манипулирование данными.

Если значение по умолчанию не объявлено явно, им является значение NULL. Обычно это имеет смысл, поскольку значение NULL можно рассматривать как представляющее неизвестные данные.

В определении таблицы значения по умолчанию перечисляются после типа данных столбца. Например:

CREATE TABLE products (
    product_no integer,
    name text,
    price numeric DEFAULT 9.99
);

Значением по умолчанию может быть выражение, которое будет вычисляться всякий раз, когда вставляется значение по умолчанию (а не при создании таблицы). Типичный пример: для столбца timestamp по умолчанию задано значение CURRENT_TIMESTAMP, поэтому для него устанавливается время добавления строки. Другим распространенным примером является генерирование «серийного номера» для каждой строки. В QHB это обычно делается примерно так:

CREATE TABLE products (
    product_no integer DEFAULT nextval('products_product_no_seq'),
    ...
);

где функция nextval() предоставляет последовательные значения из объекта последовательности (см. раздел Функции для управления последовательностями). Такое объявление достаточно распространено, поэтому для него есть специальное сокращение:

CREATE TABLE products (
    product_no SERIAL,
    ...
);

Краткое обозначение SERIAL рассматривается в подразделе Последовательные типы.