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 :

historique via trigger


Sujet :

SQL Firebird

  1. #1
    rgz
    rgz est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 14
    Points : 8
    Points
    8
    Par défaut historique via trigger
    bonjour,
    J'aimerai gérer une sorte d'historique des accés à ma base de données. J'ai donc créer une table historique(hist_id,hist_text).
    Dans le champ texte, j'aimerais pouvoir concaténer toutes les info de la requetes et les coller sous forme de chaine, avec un séparateur quelconque.

    Voici le code que j'aimerais faire marcher:
    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 TRIGGER tuuuuub FOR societe
    BEFORE INSERT
    AS
    BEGIN
       insert into historique (hist_text) values   
       (new.soc_nom+new.soc_tel_stand);
    END !!
     
    set term ; !!
    Mais
    1° - la concaténation ne marche pas avec un "+" ... d'ou le problème

    2° - Comment convertir les différents format en chaine ?? (ex: un "int" à concatener avec un "char")


    De plus, j'aimerais par la meme occasion, gérer le nom de l'utilisateur ainsi que la date en cours... par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    CREATE TRIGGER tuuuuub FOR societe
    BEFORE INSERT
    AS
    BEGIN
       insert into historique (hist_text,hist_user,hist_date) values   
       (new.soc_nom+new.soc_tel_stand+soc_num , 
       le_user, la_date);
    END !!
    Merci d'avance pour votre aide

  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
    1- la concaténation ne se fait pas avec le + mais avec le double pipe : ||
    2- Pour convertir des types utilise CAST( Valeur AS TypeDeDonnée)

    Pour le nom d'utilisateur je ne sais pas.


    Si je comprend bien tu veux faire l'équivallent d'un fichier log. Attention de ne pas trop dégrader les performances.... et ne concatène pas tout tes champs les un contre les autres, pense à les séparer...

  3. #3
    rgz
    rgz est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    merci barbidulle, ta presence sur ce forump reste incontournable !!!

    "Pour le nom d'utilisateur je ne sais pas. " je vais chercher, pas de probleme




    Merci encore et @+

  4. #4
    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
    Merci du compliment, c'est appréciable...

    Pour l' user si tu ne trouves pas tu peux le récupérer un exécutant cette requete dans ton trigger :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select USER FROM RDB$DATABASE INTO :NomUSER;

  5. #5
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 70
    Points : 84
    Points
    84
    Par défaut
    Bonjour,

    Pour le username, tu peux l'avoir avec TIBDatabase. Dans la propriété params, on doit inscrire le username et le password. Faudrait traité les caractères, mais ça doit être faisable.

    Avec cette façon, tu devrais utiliser une procédure stockée en passant le username en paramètre. Je ne suis pas sûr s'il y a un évenement onopen dans TIBDatabase. Si oui, ça serait l'endroit idéal pour ta procédure stockée

    Je ne sais pas si de concaténer les dates est la meilleure solution. J'opterais peut-être pour une insertion à chaque connexion d'un utilisateur. Si jamais tu décides de calculer le nombre de fois qu'un tel utilisateur s'est connecté, tu vas être mal pris avec tes dates concaténées

    Bonne journée !

  6. #6
    rgz
    rgz est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Merci à toi Dihap


    je devrais m'en sortir

  7. #7
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 70
    Points : 84
    Points
    84
    Par défaut
    Fait plaisir

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

Discussions similaires

  1. Création d'une table historique par trigger
    Par zemblamoh dans le forum Développement
    Réponses: 13
    Dernier message: 21/09/2017, 12h55
  2. historique de trigger
    Par haykelFST dans le forum Développement
    Réponses: 7
    Dernier message: 09/12/2011, 16h44
  3. recuperer l'historique via une requête
    Par lalarita dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/07/2010, 14h15
  4. classement automatique via TRIGGER
    Par RSI06 dans le forum SQL
    Réponses: 0
    Dernier message: 23/07/2009, 17h46
  5. comment effacer l'historique via javascript?
    Par c moi dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/05/2007, 00h49

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