Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
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 05/08/2004, 14h15   #1
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
Par défaut desactiver un trigger

bonjour à tous
j'ai un manque cruciale d'information:
est-il possible de désactiver un trigger a partir d'une appli delphi ? ou partir d'une ps ?
si cela est possible, qu'elle est l'IBX qui est approprier pour le faire.
merci à tous
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2004, 15h28   #2
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Oui c'est possible mais cette opération est à réserver pour les traitements de maintenance de la base et non pour une utilisation courante.
Car a chaque désactivation celà décrémente ne nombre de modification autoriser sur la table (255 après sa création ou après une restauration de celle ci). Une fois le compteur à 0 plus aucunne modification de la structure de la table n'est possible. Il faut faire un backup de la base suivi d'une restauration pour réinitialiser ces compteurs.

La commande est
Code :
1
2
3
4
5
6
7
8
9
10
11
12
SET TERM ^ ;
 
ALTER TRIGGER CANDIDATS_IB_BI
INACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID(GEN_CANDIDATS_IB_ID,1);
END
^
 
SET TERM ; ^
Et pour la réactiver :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
SET TERM ^ ;
 
ALTER TRIGGER CANDIDATS_IB_BI
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID(GEN_CANDIDATS_IB_ID,1);
END
 
^
 
SET TERM ; ^
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2004, 18h25   #3
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
en faite voici mon pb je veux remplir une table avec des données de deux types et sur cette table j'ai un trigger.
pour une partie de ces données le trigger doit réagir pour l'autre le trigger doit rester inactif es ce que vous n'avez pas une idée,
je suis vraiment coincé
merci d'avance
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2004, 09h02   #4
Membre confirmé
 
Avatar de TMuet
 
Homme Olivier Muet
Responsable de service informatique
Inscription : septembre 2003
Messages : 222
Détails du profil
Informations personnelles :
Nom : Homme Olivier Muet
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2003
Messages : 222
Points : 254
Points : 254
• Soit tu peux déclencher le trigger en fonction de la valeur d'un champ de la table : 0 pour les lignes qui ne devront pas le déclencher, 1 pour celles qui devront. Et hop 8)

• Soit manisfestement, le trigger n'est pas adapté.
Un trigger est fait pour réagier à certaines valeurs et/ou certaines modifications. S'il ne doit pas réagir tout le temps et qu'aucun champ de la ligne ne peut le prédire alors le trigger n'est probablement pas la meilleure solution.
Vois plutôt pour une PS à lancer "lorsqu'il le faudra"
TMuet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2004, 19h56   #5
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
merci je pense que prendrai le prémière soluce
merci
devalender 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 15h40.


 
 
 
 
Partenaires

Hébergement Web