5.2. Valores padrão #

Pode ser atribuído um valor padrão para uma coluna. Quando uma linha é criada, e não é especificado nenhum valor para algumas de suas colunas, essas colunas são preenchidas com o valor padrão de cada uma delas. Além disso, um comando de tratamento de dados pode requerer explicitamente que a coluna receba o seu valor padrão, sem saber qual é esse valor (os detalhes sobre os comandos de tratamento de dados estão no Capítulo 6).

Se não for declarado o valor padrão explicitamente, o valor nulo será o valor padrão. Isto faz geralmente sentido, porque o valor nulo pode ser considerado como representando um dado desconhecido.

Na definição da tabela, o valor padrão é colocado após o tipo de dados da coluna. Por exemplo:

CREATE TABLE produtos (
    num_produto integer,
    nome text,
    preco numeric DEFAULT 9.99
);

O valor padrão pode ser uma expressão, avaliada sempre que o valor padrão for ser inserido na coluna (e não quando a tabela é criada). Um exemplo comum é uma coluna do tipo de dados timestamp com o valor padrão CURRENT_TIMESTAMP, de modo que receba a data e hora da inserção da linha. Outro exemplo comum é a geração de um número serial para cada linha. No PostgreSQL isto é feito tipicamente por algo como:

CREATE TABLE produtos (
    num_produto integer DEFAULT nextval('produtos_num_produto_seq'),
    ...
);

onde a função nextval() fornece valores sucessivos de um objeto de sequência (veja a Seção 9.17). Este arranjo é tão comum que existe até um atalho especial para ele:

CREATE TABLE produtos (
    num_produto SERIAL,
    ...
);

A forma abreviada SERIAL é discutida mais adiante na Seção 8.1.4.