Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/01/2008, 10h43   #1
Membre régulier
 
Inscription : août 2005
Messages : 346
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2005
Messages : 346
Points : 94
Points : 94
Par défaut Besoin d'éclaircissement et de conseils sur les clés étrangères

Bonjour,

je cherche à créer des références d'intégrité avec les clés étrangères, j'ai fait plusieurs tests et j'ai du mal comprendre la différence entre et sur la contrainte de clé étrangère suivante:

Code :
1
2
3
4
5
6
7
8
9
ALTER TABLE CHANTIERS ADD FOREIGN KEY (demande) 
	REFERENCES DEMANDE (identifiant)
	MATCH FULL
	ON DELETE NO ACTION
	ON UPDATE NO ACTION;
/*
j'ai testé également avec ON DELETE RESTRICT
et ON DELETE CASCADE
*/
Sur mes 2 tables de test (CHANTIERS et DEMANDE, relation entre les champs respectifs demande et identifiant), j'ai créé 1 demande '8' et 2 chantiers associés '4' et '6'.

Selon la contrainte (restrict, no action et cascade), j'ai tenté de supprimer la demande (avec des chantiers liés) ou les chantiers liés sans toucher à la demande.

Lorsque j'utilise NO ACTION ou RESTRICT:

- impossible de supprimer la demande 8 si les chantiers 4 et 6 existent.
- je peux supprimer les chantiers 4 et 6, la demande 8 n'est pas supprimée.

Avec CASCADE:
- supprimer la demande 8 supprime les 2 chantiers liés 4 et 6.
- je peux supprimer les chantiers 4 et 6, la demande 8 n'est pas supprimée.

Ma question est la suivante: quelle différence entre RESTRICT et NO ACTION ?


Ce message fait suite à mon précédent sans réponse...
Chekov est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2008, 10h37   #2
Expert Confirmé Sénior
 
Avatar de GrandFather
 
Inscription : mai 2004
Messages : 4 490
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : mai 2004
Messages : 4 490
Points : 5 049
Points : 5 049
Bonjour,

Citation:
Envoyé par Splug Voir le message
Ma question est la suivante: quelle différence entre RESTRICT et NO ACTION ?
La seule différence est assez subtile : NO ACTION peut être différé (la vérification de la contrainte peut être effectuée à la fin de la transaction) tandis qu'avec RESTRICT ce n'est pas possible (une erreur sera levée à la première instruction SQL violant la contrainte).
__________________
FAQ XML
------------
« Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
Giacomo Leopardi
GrandFather est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 07h35   #3
Membre régulier
 
Inscription : août 2005
Messages : 346
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2005
Messages : 346
Points : 94
Points : 94
Merci GrandFather
Chekov est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h43.


 
 
 
 
Partenaires

Hébergement Web