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

Langage SQL Discussion :

Mise au point de trigger (SQL92)


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Par défaut Mise au point de trigger (SQL92)
    salut,

    j'utilise FRONTBASE(slq92) sous OSX et je désire copier l'enregistrement d'une table T_CLIENT
    vers T_CLIENT_HISTO avant sa modification.
    la syntaxe suivante à pour effet de copier l'intégralité des enregistrements
    j'en convient, mais ceci m'a permis de valider le fonctionnement du trigger.
    alors comment puis-je faire pour ne copier que l'enregistrement en cours de
    modification...autrement dit "insert into T_CLIENT_HISTO select T_CLIENT.* from T_CLIENT WHERE ID_CLIENT = ??? "

    syntaxe testé !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE  TRIGGER trig_client
        BEFORE UPDATE ON T_CLIENT FOR EACH ROW 
    BEGIN
    insert into T_CLIENT_HISTO  select T_CLIENT.* from T_CLIENT  WHERE ID_CLIENT = ID_CLIENT; 
    END
    j'espère que j'ai été assez clair dans ma requête!


    merci à tous

  2. #2
    Membre très actif Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Par défaut
    Je ne sais pas si c'est dans une norme SQL, mais dans un trigger, tu as accès aux nouvelles valeurs des colonnes de ta table par : NEW.nom_colonne et les anciennes valeurs par : OLD.nom_colonne.
    Il faut se documenter par rapport a FRONTBASE (que je ne connais pas).

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Par défaut Mise au point de trigger (SQL92)
    merci, pour la réponse, TryExeptEnd

    à noté que Frontbase est basé sur du sql92

    j'ai testé des syntaxe utilisant: old.nom-champ et new.nom-champ tel que:
    *
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE  TRIGGER trig_client
    	BEFORE UPDATE ON T_CLIENT FOR EACH ROW 
    BEGIN
    insert into T_CLIENT_HISTO  select T_CLIENT.* from T_CLIENT  WHERE ID_CLIENT = :old.ID_CLIENT; 
    END
    *

    resultat, la creation du trigger échou , que ce soit avec ":old." ou "old."
    d'ailleur, il me semblais que ":old." était propre à Oracle !

    il faudrait contourné le problème en récupérant la valeur de l'index de l'enregistrement en cour de modification et faire quelque chose comme :
    *
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE  TRIGGER trig_client
    	BEFORE UPDATE ON T_CLIENT FOR EACH ROW 
    BEGIN
    insert into T_CLIENT_HISTO  select T_CLIENT.* from T_CLIENT  WHERE index = valeur-index; 
    END
    *

    help,help

  4. #4
    Membre très actif Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Par défaut
    Essai la syntaxe : et fait un tour su le site de FRONTBASE.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Par défaut Mise au point de trigger (SQL92)
    OLD ou NEW seul ne passe pas non plus...je vais voir à nouveau sur le site de frontbase.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Par défaut Mise au point de trigger (SQL92)
    Salut à tous ,

    pour info, les docs frontbase font tous référence à SQL92,
    quelqu'un aurait il un lien pour une doc détaillé de SQL92,pour y voir
    la syntaxe d'un trigger de mon type !

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

Discussions similaires

  1. Mise au point d'un trigger logoff
    Par grome dans le forum PL/SQL
    Réponses: 6
    Dernier message: 29/05/2008, 08h58
  2. Mise au point d'un bon algo
    Par cryptorchild dans le forum Langage
    Réponses: 3
    Dernier message: 08/10/2005, 17h04
  3. Petite mise au point avec gluUnProject.
    Par fatpat94 dans le forum OpenGL
    Réponses: 1
    Dernier message: 27/07/2005, 15h40
  4. [Mise au point] dhcp
    Par Ernest dans le forum Développement
    Réponses: 5
    Dernier message: 07/10/2004, 17h56
  5. Questions de mise aux points
    Par nicoo dans le forum DirectX
    Réponses: 5
    Dernier message: 11/05/2004, 14h01

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