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

Desactiver un trigger

Technique - général | Desactiver un trigger

Par Garulfo le 14/04/2006 - 15:22

Bonjour,
Je souhaite poser un trigger qui à pour rôle de vérifier, avant une insertion, la qualité des données.

Exemple :
Je veux inserer une ligne dans une table 'Logiciels'. Mais avant de l'inserer, je souhaite vérifier s'il existe déjà un logiciel avec un nom similaire. S'il n'y a pas déjà un enregistrement ayant un nom proche, alors j'inserer dans cette table, sinon j'insere dans une table "intermediaire de validation".

Le probleme, c'est dans le cas où le logiciel est nouveau et qu'il doit donc être inséré dans la table 'Logiciels', le trigger (sur 'Logiciels') va se déclencher à répitition (comme un boucle infini).

Je souhaiterais donc savoir s'il est possible de désactiver un trigger.
J'ai essayé de faire "Exectute 'Alter Trigger '|| TG_NAME ||' disable" mais j'obtient une erreur (ERROR: syntax error at or near "disable").

Merci d'avance pour votre aide,

Fabien.

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.

on ne peut désactiver un tri

sparky/ = 14 Avril, 2006 - 19:01

on ne peut désactiver un trigger : tu es obligé de le "dropper"

Pour ton trigger :
1. record n'existe pas dans table Logiciel et n'existe pas dans Table aValider enregistrer dans table aValider
2. record n'existe pas ds table Logicel et existe dans Table aValider alors sauver dans Table Logiciel
3. record existe dans table Logiciel -> return

Pas besoin de désactiver ;-)


Merci beaucoup Sparky :)

Garulfo/ = 14 Avril, 2006 - 20:56

Merci beaucoup Sparky :)


Bonsoir On peut désactive

Christophe Chauvet/ = 15 Avril, 2006 - 20:40

Bonsoir

On peut désactiver un trigger depuis la 8.1 en utilidsant un ALTER TABLE

Cordialement.

Christophe Chauvet
http://kryskool.org/


droits pour ALTER TABLE

say3375/ = 9 Mars, 2007 - 13:35

Hello,
j'utilise effectivement la commande :
ALTER TABLE ma_table DISABLE TRIGGER ALL; et ça marche bien.
en tout cas, pour moi ou les superuser.

sauf que ponctuellement j'ai besoin de désactiver le trigger à partir d'un compte user lambda.
existe-t-il des possibilités de dépersonnalisation de type
EXECUTE ma commance AS monuser?

merci d'avance


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