Документация по PostgreSQL 9.1.1 | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 5. Определение данных | Fast Forward | Next |
Для колонки можно задать значение по умолчанию. Если при создании новой строки в таблице, значения для некоторых колонок не будут указаны, то эти колонки могут быть заполнены заданными для них значениями по умолчанию. Кроме того, команда манипулирования данными может явно затребовать установить значение по умолчанию для какой-либо колонки, при этом не зная о самом значении. (Подробности о командах манипулирования данными можно найти в Chapter 6.)
Если значение по умолчанию явно не задано, то значением по умолчанию является null. Обычно это правильно, потому что значение null может быть использовано для обозначения неизвестных данных.
Значения по умолчанию перечисляются после типа данных колонки при создании таблицы. Например:
CREATE TABLE products ( product_no integer, name text, price numeric DEFAULT 9.99 );
Значение по умолчанию может также быть каким-либо выражением, которое будет выполнятся во время вставки значения по умолчанию (а не во время создания таблицы). Типичный пример — это колонка с типом данных, который объединяет дату и время — timestamp, где значением по умолчанию является выражение CURRENT_TIMESTAMP. При вставке новой строки, это выражение получает текущую дату и время. Другой типичный пример — это генерация "серийного номера" для каждой колонки. В PostgreSQL это обычно делается с помощью подобного рода конструкций:
CREATE TABLE products ( product_no integer DEFAULT nextval('products_product_no_seq'), ... );
где функция nextval() предоставляет правильные значения из объекта последовательности (см. Section 9.15). Для такого действия существует и специальное сокращение:
CREATE TABLE products ( product_no SERIAL, ... );
Сокращение SERIAL обсуждается далее в Section 8.1.4.