| Documentation PostgreSQL 7.4.29 | ||||
|---|---|---|---|---|
| Précédent | Arrière rapide | Chapitre 3. Fonctionnalités avancées | Avance rapide | Suivant | 
    Souvenez-vous des tables temps et
    villes du Chapitre 2.
    Considérez le problème suivant : vous voulez vous assurer que personne
    n'insère de lignes dans la table temps qui ne
    correspondraient pas à une entrée dans la table
    villes. Ceci maintient l'intégrité
    référencielle de vos données. Dans les systèmes de bases de
    données simples, ceci serait implémenté (si possible) en vérifiant en
    premier lieu que la table ville dispose bien d'un
    enregistrement correspondant, puis en insérant ou en empêchant l'insertion
    du nouvel enregistrement dans temps. Cette approche
    présente un certain nombre de problèmes et n'est pas très simple, donc
    PostgreSQL peut s'en charger pour vous.
   
La nouvelle déclaration des tables ressemblerait à ceci :
CREATE TABLE villes ( ville varchar(80) primary key, emplacement point ); CREATE TABLE temps ( ville varchar(80) references villes, temp_haute int, temp_basse int, prcp real, date date );
Maintenant, essayons d'insérer un enregistrement non valide :
INSERT INTO temps VALUES ('Berkeley', 45, 53, 0.0, '1994-11-28');
ERROR: insert or update on table "temps" violates foreign key constraint "$1" DETAIL: Key (ville)=(Berkeley) is not present in table "villes".
Le comportement des clés secondaires peut être précisé très finement pour votre application. Nous n'irons pas plus loin que cet exemple simple dans ce tutoriel mais référez-vous simplement au Chapitre 5 pour plus d'informations. Utiliser correctement les clés secondaires améliore la qualité de vos applications de bases de données, donc vous êtes fortement encouragé à les connaître.
| Précédent | Sommaire | Suivant | 
| Vues | Niveau supérieur | Transactions |