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,
Manipulation de données).
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 attribuée 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.12,
« Fonctions de manipulation de séquence »). 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, « Types
seriés ».