PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

Activer -Désactiver des contraintes d'intégrité

Technique - général | Activer -Désactiver des contraintes d'intégrité

Par tony31 le 18/02/2005 - 01:10

Bonsoir,

j'aimerai savoir s'il existe un moyen aussi simple q'en Oracle de pouvoir désactiver ou activer des contraintes d'intégrité.

ex:

ALTER TABLE projet
DISABLE CONSTRAINT fk_projet_eq;

ALTER TABLE projet
ENABLE CONSTRAINT fk_projet_eq
EXCEPTIONS INTO rejets;

Voila je voudrais l'équivalent en postgres si possible

merci d'avance

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramètres" pour activer vos changements.

Pas encore

Jean-Paul Argudo/ = 18 Février, 2005 - 10:36

Bonjour tony31,

Hélas dans PostgreSQL on ne peut pas encore faire cela. Il n'y a pas d'autre solution pour l'instant que de dropper la contrainte et la re-créer par la suite.

Ce n'est même pas dans la TODO List à ce jour... :-/

--
Jean-Paul ARGUDO
www.PostgreSQLFr.org


RE: Désactiver des contraintes d'intégrité

tony31/ = 18 Février, 2005 - 22:07

Bonjour Jean-Paul Argudo,

merci beaucoup de ta réponse

Tony


Il y a une possibilité

SAS/ = 21 Février, 2005 - 13:27

Un exemple valant un discours :



test=# create table trig_test (id smallint primary key, chaine char(20) constraint con1 CHECK (id > 100 AND chaine <> ''));


NOTICE: CREATE TABLE / PRIMARY KEY créera un index implicite «trig_test_pkey» pour la table «trig_test»


CREATE TABLE


test=# insert into trig_test values(1,'');


ERREUR: La nouvelle ligne pour la relation «trig_test» viole la contrainte de vérification «con1»


test=# update pg_class set relchecks=0 where relname ='trig_test';


UPDATE 1


test=# insert into trig_test values(1,'');


INSERT 18288 1


test=# update pg_class set relchecks=1 where relname ='trig_test';


UPDATE 1


test=# insert into trig_test values(1,'');


ERREUR: La nouvelle ligne pour la relation «trig_test» viole la contrainte de vérification «con1»





Petite explication :


Je crée une table contenant une contrainte sur les colonnes 'id' et 'chaine'.
Lors de la première insertion, je tente d'insérer des valeurs interdites et une chaine vide. Cette iinsertion est normalement refusée.
En modifiant la valeur de relchecks dans la table pg_class, je dévalide les contraintes sur la table.
Je peux faire mon insertion.


Les contraintes sont revalidées par la mise à 1 de la valeur de la colonne relchecks.

Cela permet de dévalider les contraintes sur la table. Je n'ai pas encore chercher plus loin la possibilité de dévalider une seule contrainte. Mais comme le dit jpa, elle peut être supprimée et recrée aisément.



Stéphane Schildknecht


RE :RE

tony31/ = 16 Mars, 2005 - 19:48

merci bcp Stéphane Schildknecht

Tony


Il vous en prie ;-)

SAS/ = 17 Mars, 2005 - 11:09

Content que l'exemple ait pu te servir.

Stéphane Schildknecht


© PostgreSQLFr, tous droits réservés.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.