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.