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

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

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

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

Если явно не объявлено значение по умолчанию, то значение по умолчанию будет пустым (null). Это обычно разумно, поскольку пустое значение может рассматриваться как указание неизвестного типа данных.

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

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

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

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

где функция nextval() берет очередные значения из последовательности (см. Раздел 9.17). Эта схема настолько распространена, что для нее существует специальное сокращение:

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

Сокращение SERIAL подробно обсуждается в разделе Раздел 8.1.4.