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 :

Problème à la création d'un trigger


Sujet :

SQL Firebird

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Problème à la création d'un trigger
    Bonjour,
    Dans un script, je crée une table avec un trigger pour lauto-incrémentation d'un générateur :

    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
    CREATE TABLE "COMPOSANT" 
    (
      "ID_COMPOSANT"	INTEGER NOT NULL,
      "F_COMPOSANT"	VARCHAR(60) NOT NULL,
      "N_COMPOSANT"	VARCHAR(60) NOT NULL,
      "LNK_ELEMENT"	INTEGER NOT NULL,
     PRIMARY KEY ("ID_COMPOSANT")
    );
    CREATE TRIGGER "ID_COMPOSANT" FOR "COMPOSANT" 
    ACTIVE BEFORE INSERT POSITION 0
    as
    begin
       if (new.id_composant is null) then
           new.id_composant = gen_id(gen_composant,1);
    end;
    Le script est exécuté sans erreur mais le trigger n'est pas référencé dans la liste des triggers et lorsque je consulte la metadata, voici ce que je lis :

    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
    CREATE TABLE "COMPOSANT" 
    (
      "ID_COMPOSANT"	INTEGER NOT NULL,
      "F_COMPOSANT"	VARCHAR(60) NOT NULL,
      "N_COMPOSANT"	VARCHAR(60) NOT NULL,
      "LNK_ELEMENT"	INTEGER NOT NULL,
     PRIMARY KEY ("ID_COMPOSANT")
    );
     
    ALTER TABLE "COMPOSANT" ADD                <<======
    as
    begin
       if (new.id_composant is null) then
           new.id_composant = gen_id(gen_composant,1);
    end;
    Dans le même script, je crée d'autres tables, de même structure, et je ne rencontre pas le problème.
    Par contre le problème se répète pour des tables de structures différentes, bref je ne trouve pas une relation de cause à effet entre la structure de la table et la mauvaise création du trigger

    Que se passe t'il ?

    J'utilise IB 7.5

    Merci de votre aide

    Vincent

    _______________________________
    Balises [Code] rajoutées par yobenzen

  2. #2
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Comme exécutez vous votre script ? (IBExpert ? )

    Je suis étonné que vous n ayez pas de SET TERM dans votre script, obligatoire pour définir correctement un PS ou Trigger.

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Rep: Problème à la création d'un trigger
    Bonjour

    Les triggers sont générés via les outils de IBConsole.
    Je ne fais que nommer le trigger, choisir la date, l'événement et j'entre le code voulu entre le begin .. end donné par IBConsole.

    Je viens de faire un essai supplémentaire en nomant le trigger id_compo au lieu de id_composant et cela marche.

    Est-ce possible qu'en donnant au trigger le même que celui d'un champ de la table cela provoque l'erreur à laquelle je suis confrontée ?

    Merci de votre aide

    Vincent

  4. #4
    Candidat au Club
    Inscrit en
    Octobre 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Rep: Problème à la création d'un trigger
    L'inspiration m'est venue en lisant le message de Barbibulle.

    J'ai créé un trigger en le nommant autrement que du nom d'un champ de la table sur laquelle agit le trigger. Et cela marche.

    Bref, il ne faut jamais nommer de la même manière deux fonctionalités différentes qui peuvent inter agir

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

Discussions similaires

  1. Problème sur la création d'un trigger
    Par Kwads dans le forum Requêtes
    Réponses: 1
    Dernier message: 23/04/2015, 03h00
  2. Problème de création du trigger
    Par dedalios dans le forum PL/SQL
    Réponses: 2
    Dernier message: 04/03/2013, 10h07
  3. Problème enchainement création trigger
    Par mafanta dans le forum SQL
    Réponses: 2
    Dernier message: 18/06/2012, 14h38
  4. problème de création d'un trigger
    Par maysa dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 23/07/2010, 00h58
  5. [Rave Report] problème de création dynamique
    Par Nivux dans le forum Rave
    Réponses: 2
    Dernier message: 24/05/2003, 00h07

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