PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 31/01/2011 12:53:23

bob45
Membre

Désactiver temporairement une contrainte

Bonjour,
Est-il possible de désactiver temporairement une contrainte de clé étrangère ?
Merci par avance

Hors ligne

#2 31/01/2011 13:29:28

gleu
Administrateur

Re : Désactiver temporairement une contrainte

Oui, il faut désactiver le trigger associé. Attention qu'à la réactivation, aucune vérification ne sera effectuée, ce qui fait que vous pourriez vous trouver avec des problèmes de cohérence de données. Voir http://docs.postgresql.fr/9.0/sql-altertable.html, avec le DISABLE TRIGGER.


Guillaume.

Hors ligne

#3 31/01/2011 15:43:34

bob45
Membre

Re : Désactiver temporairement une contrainte

La commande  : ALTER table nom_table disable trigger all;  fonctionne (l'attribut tgenabled de la table pg_trigger passe à D).
Cependant j'aimerais pouvoir désactiver une seule contrainte de clé étrangère. Je n'arrive pas à cibler le nom du déclencheur à désactiver. D'ailleurs plusieurs triggers apparaissent dans la  pg_trigger concernant l'unique clé étrangère de ma table.
Merci (encore).

Hors ligne

#4 31/01/2011 15:53:30

gleu
Administrateur

Re : Désactiver temporairement une contrainte

Vous pouvez désactiver que certains triggers. Par contre, il vous faudra trouver les bon triggers pour viser juste smile


Guillaume.

Hors ligne

#5 31/01/2011 15:57:35

bob45
Membre

Re : Désactiver temporairement une contrainte

Merci.

Hors ligne

#6 31/01/2011 16:02:18

Marc Cousin
Membre

Re : Désactiver temporairement une contrainte

Il pourrait aussi être intéressant de déclarer la foreign key comme deferrable (si la version du moteur le permet).


Marc.

Hors ligne

#7 31/01/2011 17:57:42

gleu
Administrateur

Re : Désactiver temporairement une contrainte

Ce qui ne la désactive pas (ce qui est un bien ou un mal, suivant le but de cette "désactivation").


Guillaume.

Hors ligne

#8 01/02/2011 09:52:06

Marc Cousin
Membre

Re : Désactiver temporairement une contrainte

D'où ma question… Si on ne sait pas qu'on peut les créer en deferrable, on va vouloir désactiver totalement la contrainte.


Marc.

Hors ligne

Pied de page des forums