5.2. Valeurs par défaut

On peut attribuer une valeur par défaut à une colonne. Quant une nouvelle rangée est créée et aucune valeur n'est spécifiée pour certaines de ses colonnes, celles-ci sont remplies avec leur valeur par défaut respective. Une commande de manipulation de données peut aussi demander explicitement qu'une colonne soit mise à sa valeur par défaut sans avoir à connaître la valeur en question. (Les détails sur les commandes de manipulation de données sont dans Chapitre 6.)

Si aucune valeur par défaut n'est déclarée explicitement, la valeur par défaut est la valeur NULL. Ceci est d'habitude cohérent car on peut considérer que la valeur NULL représente des données inconnues.

Dans une définition de table, les valeurs par défaut sont listées après le type de donnée de la colonne. Par exemple:

CREATE TABLE products (
    product_no integer,
    name text,
    price numeric DEFAULT 9.99
);

La valeur par défaut peut être une expression, qui sera évaluée à l'insertion de la valeur par défaut (pas à la création de la table.) Un exemple habituel est qu'une colonne de type timestamp pourrait avoir une valeur par défaut now(), de façon à ce qu'il obtienne la valeur de l'heure au moment de l'insertion. Un autre exemple habituel est la génération d'un << numéro de série >> pour chaque ligne. Dans PostgreSQL, ceci se fait habituellement par quelque chose comme

	CREATE TABLE products (
	product_no integer DEFAULT nextval('products_product_no_seq'),
	...
	);

où la fonction nextval() fournit des valeurs successives à partir d'une objet séquence (voir Section 9.12). Cet arrangement est suffisamment commun pour qu'il y ait un raccourci pour lui :

	CREATE TABLE products (
	product_no SERIAL,
	...
	);

Le raccourci SERIAL est discuté plus tard dans Section 8.1.4.