IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Firebird Discussion :

Procedure stockée pour activer désactiver un TRIGGER


Sujet :

SQL Firebird

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 735
    Points : 807
    Points
    807
    Par défaut Procedure stockée pour activer désactiver un TRIGGER
    Bonjour,

    je voudrai faire une procédure stockée pour activer ou désactiver un TRIGGER avec Firebird (paramètre d'entréé nom du trigger CHAR(31) et un champ pour savoir si il faut que le trigger soit actif ou inactif)

    je sais en gros ce qu'il faut faire mais si quelqu'un a déjà tout fait : ça m'aiderai bien...

    Merci

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Tu peux faire ceci avec EXECUTE STATEMENT, comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    SET TERM ^ ;
     
    CREATE PROCEDURE TRIGGER_STATE (
        TRIGGER_NAME VARCHAR(31),
        IS_ACTIVE TYPE OF D_BOOLEAN)
    AS
    DECLARE VARIABLE STMT VARCHAR(512);
    BEGIN
      IF (IS_ACTIVE = 'Y') THEN
        STMT = 'ALTER TRIGGER ' || TRIGGER_NAME || ' ACTIVE';
      ELSE
        STMT = 'ALTER TRIGGER ' || TRIGGER_NAME || ' INACTIVE';
     
      EXECUTE STATEMENT STMT;
    END^
     
    SET TERM ; ^
    @+ Claudius

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 735
    Points : 807
    Points
    807
    Par défaut
    Merci.

    je ne pensais pas que c'était si simple...

    je me suis un peu fait avoir par IBExpert car lorsque tu décoches la case dans ce logiciel, il t'affiche un script ou il recréé totalement le trigger

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SET TERM ^ ;
     
    CREATE OR ALTER TRIGGER ACCOUNT_PROFILE_BI FOR ACCOUNT_PROFILE
    ACTIVE BEFORE INSERT POSITION 0
    as
    begin
      if (new.ap_id is null) then
        new.ap_id = gen_id(gen_account_profile_id,1);
    end
    ^
     
    SET TERM ; ^
    et le type du déclencheur (RDB$TRIGGER_TYPE) est stocké sous forme de smallint... en cherchant bien, j'aurai trouvé mais pourquoi faire compliqué quand c'est finalement si simple.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. trigger ou procedure stockée pour remplir une table
    Par khalid76 dans le forum Développement
    Réponses: 3
    Dernier message: 04/10/2012, 14h10
  2. [WD12] Procedures stockées pour HF
    Par Fred 57220 dans le forum WinDev
    Réponses: 2
    Dernier message: 14/01/2009, 09h54
  3. procedure stockée pour insertion dans plusieurs tables
    Par bigwal2007 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 22/11/2007, 22h58
  4. procedure stocké pour avoir les droits utilisateur
    Par Babylonne dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 27/06/2006, 14h09
  5. Réponses: 2
    Dernier message: 20/04/2006, 14h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo