Une valeur par défaut peut être attribuée à une colonne. Quand une nouvelle ligne est créée et qu'aucune valeur n'est indiquée pour certaines de ses colonnes, celles-ci sont remplies avec leurs valeurs par défaut respectives. Une commande de manipulation de données peut aussi demander explicitement que la valeur d'une colonne soit positionnée à la valeur par défaut, sans qu'il lui soit nécessaire de connaître cette valeur (les détails concernant les commandes de manipulation de données sont donnés dans le Chapitre 6).
Si aucune valeur par défaut n'est déclarée explicitement, la valeur par défaut est la valeur NULL. Cela a un sens dans la mesure où l'on peut considérer que la valeur NULL représente des données inconnues.
Dans la définition d'une table, les valeurs par défaut sont listées après le type de données de la colonne. Par exemple:
CREATE TABLE produits (
no_produit integer,
nom text,
prix numeric DEFAULT 9.99
);
La valeur par défaut peut être une expression, alors évaluée à l'insertion
de cette valeur (pas à la création de la
table). Un exemple commun est la colonne de type timestamp
dont la valeur par défaut est now()
. Elle se voit ainsi
attribuer l'heure d'insertion. Un autre exemple est
la génération d'un « numéro de série » pour chaque ligne.
Dans PostgreSQL, cela s'obtient habituellement par
quelque chose comme
CREATE TABLE produits (
no_produit integer DEFAULT nextval('produits_no_produit_seq'),
...
);
où la fonction nextval()
fournit des valeurs successives à
partir d'un objet séquence (voir la Section 9.17). Cet arrangement est suffisamment commun
pour qu'il ait son propre raccourci :
CREATE TABLE produits (
no_produit SERIAL,
...
);
Le raccourci SERIAL
est discuté plus tard dans la Section 8.1.4.