Значения по умолчанию
Столбцу может быть назначено значение по умолчанию. Когда создается новая строка и для некоторых столбцов не указаны значения, эти столбцы будут заполнены соответствующими значениями по умолчанию. Команда манипулирования данными тоже может явно запросить, чтобы для столбца было установлено значение по умолчанию, и ей необязательно знать, что это за значение. (Подробнее команды манипулирования данными рассматриваются в главе Манипулирование данными.
Если значение по умолчанию не объявлено явно, им является значение 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 рассматривается в подразделе Последовательные типы.