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 :

trigger et sql manager lite 2005


Sujet :

SQL Firebird

  1. #1
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 62
    Points : 53
    Points
    53
    Par défaut trigger et sql manager lite 2005
    bonjour,

    je connais Firebird depuis trois jours et je suis bloquer par un probleme stupide (enfin je pense!).

    Je dois creer un script qui genere le schema de la base de donnees. La base de donnees est donc Firebird et le GUI SQL Manager Lite 2005. Pas de soucis avec des CREATE TABLE, les INDEX etc... par contre les TRIGGER ne passent pas!
    J'utilise SQL Manager 2005 Lite comme GUI.

    Je genere le code suivant a partir de l'editeur de TRIGGER :

    CREATE TRIGGER CONF_TRIGGER FOR TABLE
    ACTIVE BEFORE INSERT
    POSITION 0
    AS
    BEGIN
    IF (NEW.MonID IS NULL)
    THEN NEW.MonID = GEN_ID (conf_generator,1);
    END;

    ou conf_generator est un generateur.

    * Quand je copie cette requete dans le fichier qui contient toutes les requetes pour generer le schema de la base de donnees, et que je l'ouvre dans le SQL Editor, FireBird bloque sur le TRIGGER.

    * Quand je met 2 triggers dans le SQL editor et que je clique sur Execute Query , il bloque sur le 2e.

    * Quans j'en met un seul et que je clique sur "Explain Query" , j'obtiens le message d'erreur suivant :
    Invalid token.
    Dynamic SQL Error.
    SQL error code = -104.
    Unexpected end of command.

    * Dans la meme situation que le point precedent, mais avec le bouton Execute Query, l'action se deroule correctement

    voila, j'ai essaye d'etre le plus precis possible.
    Desole pour les accents, je n'en ai pas sur mon clavier.
    Merci,
    Matthias

  2. #2
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 715
    Points
    3 715
    Par défaut
    voilà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SET TERM ^^;
    CREATE TRIGGER CONF_TRIGGER FOR TABLE
    ACTIVE BEFORE INSERT
    POSITION 0
    AS
    BEGIN
    IF (NEW.MonID IS NULL)
    THEN NEW.MonID = GEN_ID (conf_generator,1);
    END;
    SET TERM ;^^
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  3. #3
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 62
    Points : 53
    Points
    53
    Par défaut merci mais ca ne marche toujours pas
    Merci Phillippe
    mon nouveau code est donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SET TERM ^^;
    CREATE TRIGGER CONF_TRIGGER FOR CONFIG
    ACTIVE BEFORE INSERT
    POSITION 0
    AS
    BEGIN
    IF (NEW.CONFIGID IS NULL)
    THEN NEW.CONFID = GEN_ID (conf_generator,1);
    END;
    SET TERM ;^^
    Le message d'erreur que j'obtient est :
    Invalid token.
    Dynamic SQL Error.
    SQL error code = -104.
    Token unknown - line 9, char 1.
    SET.
    En cherchant un peu a quoi correspondait SET TERM j'ai trouve plein de fornulations differentes :
    SET TERM ^^;
    SET TERM ^;
    SET TERM $$;
    SET TERM !!;
    A quoi correspond ces differences? Est-ce que c'est lie au dialecte utilise? J'ai choisi les dialectes 3 parcequ'il comprend le type BIGINT que j'utilise a l'origine dans la bdd MySQL que je suis en train de migrer vers FireBird.

  4. #4
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 62
    Points : 53
    Points
    53
    Par défaut maintenant ca marche, mais je voudrais comprendre pourquoi ?!#@
    j'ai remplace les ^^ que Philipe m'avait conseille par des !!
    La requete devient donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SET TERM !! ;
    CREATE TRIGGER CONF_TRIGGER FOR CONFI
    ACTIVE BEFORE INSERT
    POSITION 0
    AS
    BEGIN
    IF (NEW.CONFID IS NULL)
    THEN NEW.CONFID = GEN_ID (conf_generator,1);
    END !!
    SET TERM ; !!
    Y-a-t'il un document sur le net qui explique dans quel cas utiliser ^, ! ou $ ?

  5. #5
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 715
    Points
    3 715
    Par défaut
    Citation Envoyé par ]matmat[
    j

    Y-a-t'il un document sur le net qui explique dans quel cas utiliser ^, ! ou $ ?
    c'est pareil, j'avais juste oublié dans le code transmis de remplacer le dernier END; par END^^
    SET TERM permet de définir le ou les caractères qui indique au parseur que la commande est terminée, complète
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

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

Discussions similaires

  1. Test BLOB vide erreur (SQL Manager 2005)
    Par Fred29 dans le forum Outils
    Réponses: 6
    Dernier message: 11/04/2008, 10h19
  2. copier une base de données en sql manager 2005
    Par danouna dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/11/2007, 07h58
  3. bug sql serveur management studio 2005
    Par ylarvor dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 05/11/2007, 09h22
  4. Réponses: 2
    Dernier message: 10/06/2007, 11h55
  5. Réponses: 11
    Dernier message: 12/04/2007, 22h13

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