Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#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
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
Pages : 1