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

Administration Firebird Discussion :

Vérifier le nombre de lignes insérées, updatées ou deletées.


Sujet :

Administration Firebird

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    avril 2023
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : avril 2023
    Messages : 102
    Points : 31
    Points
    31
    Par défaut Vérifier le nombre de lignes insérées, updatées ou deletées.
    Bonjour à tous.tes, c'est mouai

    Je me demande s'il n'existerait pas un moyen d'interroger les tables système pour connaître le nombre de lignes insérées, updatées ou deletées après l'exécution d'un ordre SQL, quel qu'il soit.
    Quelqu'un saurait-il m'aiguiller, svp ?

    Je sais interroger les tables système pour récupérer les noms de champs, de tables, clés...
    Mais je me dis qu'il existe peut-être, dans une table, la petite info miracle.

    Merci d'avance

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    avril 2023
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : avril 2023
    Messages : 102
    Points : 31
    Points
    31
    Par défaut
    Peut-être avec la table MON$RECORD_STATS ?
    Mais comment être sûr que ce sont mes requêtes et uniquement elles qui ont fait varier les compteurs ?
    Je me demande s'il n'y a pas une commande pour utiliser les stat, comme dans SQLServer.
    Du genre SET STAT ON , non ?

    Parce que les enreg de la table ne changent pas.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    avril 2023
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : avril 2023
    Messages : 102
    Points : 31
    Points
    31
    Par défaut
    Vous faites toujours la gueule ?
    Si, c'est bon, ça bouge. Je vais essayer de travailler avec ça demain.

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    14 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 14 424
    Points : 39 158
    Points
    39 158
    Billets dans le blog
    59
    Par défaut
    Citation Envoyé par DOliv Voir le message
    Vous faites toujours la gueule ?
    J'imagine que c'était ironique, il y a une vie en dehors de Delphi,Firebird, etc.

    N.B. Il y a certainement des différence entre versions de Firebird donc indiquer la version utilisée n'est pas vraiment optionnel

    Firebird 3 pour moi par "défaut", sur ce poste et ce SQL sachant que coexiste une version Firebird 4

    Je vais essayer de travailler avec ça demain.

    il va falloir en plus utiliser d'autres tables de monitoring et des jointures pour cibler la recherche

    Ici pour une statistique sur le nombre de pages
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT r.MON$STAT_GROUP,r.MON$PAGE_WRITES, r.MON$PAGE_FETCHES, r.MON$PAGE_MARKS,
    I.MON$TRANSACTION_ID,A.MON$ATTACHMENT_NAME,A.MON$USER
    FROM MON$IO_STATS r LEFT JOIN MON$TRANSACTIONS I ON I.MON$STAT_ID=r.MON$STAT_ID
                        LEFT JOIN MON$ATTACHMENTS A ON A.MON$ATTACHMENT_ID=I.MON$ATTACHMENT_ID
    et trouver la bonne clause WHERE ou grouper selon besoin

    donc, un tour sur ce document sera nécessaire
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    avril 2023
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : avril 2023
    Messages : 102
    Points : 31
    Points
    31
    Par défaut
    J'ai trouvé un truc intéressant pour le monitoring :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select t.MON$TABLE_NAME, r.MON$STAT_ID, r.MON$STAT_GROUP, r.MON$RECORD_SEQ_READS,
        r.MON$RECORD_IDX_READS, r.MON$RECORD_INSERTS, r.MON$RECORD_UPDATES,
        r.MON$RECORD_DELETES, r.MON$RECORD_BACKOUTS, r.MON$RECORD_PURGES,
        r.MON$RECORD_EXPUNGES, r.MON$RECORD_LOCKS, r.MON$RECORD_WAITS,
        r.MON$RECORD_CONFLICTS, r.MON$BACKVERSION_READS, r.MON$FRAGMENT_READS,
        r.MON$RECORD_RPT_READS
    from MON$TABLE_STATS t
    inner join MON$RECORD_STATS r
        on t.MON$STAT_GROUP = r.MON$STAT_GROUP and t.MON$RECORD_STAT_ID = r.MON$STAT_ID
    Mais MON$TABLE_NAME n'existe pas sur mon Firebird

    Quelqu'un connaitrait-il l'alternative à cette very powerful requête ? svp

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    14 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 14 424
    Points : 39 158
    Points
    39 158
    Billets dans le blog
    59
    Par défaut
    Citation Envoyé par DOliv Voir le message
    Mais MON$TABLE_NAME n'existe pas sur mon Firebird
    il s'agit de la table MON$TABLE_STATS et, je l'avais pourtant bien écrit !
    des différences entre versions de Firebird donc indiquer la version utilisée n'est pas vraiment optionnel
    j'en déduis que cela doit être une version 2.5, de ce fait il y aura aussi d'autres colonnes qui manqueront
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    avril 2023
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : avril 2023
    Messages : 102
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    j'en déduis que cela doit être une version 2.5
    Bonjour Sergio. Si tu le dis
    Où est ce que je peux le voir ?

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    14 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 14 424
    Points : 39 158
    Points
    39 158
    Billets dans le blog
    59
    Par défaut
    Avec FlameRobin, Server/Retrieve Server Version
    ou en SQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT rdb$get_context('SYSTEM', 'ENGINE_VERSION') as version from rdb$database;
    Pour en revenir à l'interrogation "nombre de lignes ....", dans un contexte multi-utilisateur, cela va être compliqué puisqu'il va falloir tenir compte des identifiants de transaction
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    avril 2023
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : avril 2023
    Messages : 102
    Points : 31
    Points
    31
    Par défaut
    Rââhhh merci.
    2.5.9
    Ne me dis pas qu'ils ont intégré MON$TABLE_STATS dans la 2.6

  10. #10
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    14 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 14 424
    Points : 39 158
    Points
    39 158
    Billets dans le blog
    59
    Par défaut
    La 2.5 est une version devenue non maintenue et donc "obsolète", plus de mise à jour
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    14 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 14 424
    Points : 39 158
    Points
    39 158
    Billets dans le blog
    59
    Par défaut
    Avec la version 2.5
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT r.MON$STAT_ID, r.MON$STAT_GROUP, r.MON$RECORD_SEQ_READS,
        r.MON$RECORD_IDX_READS, r.MON$RECORD_INSERTS, r.MON$RECORD_UPDATES,
        r.MON$RECORD_DELETES, r.MON$RECORD_BACKOUTS, r.MON$RECORD_PURGES,
        r.MON$RECORD_EXPUNGES,
        a.*,T.*
    FROM MON$RECORD_STATS r JOIN MON$ATTACHMENTS a ON a.MON$STAT_ID=r.MON$STAT_ID
                            JOIN MON$TRANSACTIONS t on t.MON$ATTACHMENT_ID=a.MON$ATTACHMENT_ID
    Reste à définir la clause WHERE grâce aux renseignements des autres tables de monitoring MON$ATTACHMENTS ET MON$TRANSACTIONS ainsi que le bon type de JOINTURE
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    avril 2023
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : avril 2023
    Messages : 102
    Points : 31
    Points
    31
    Par défaut
    Merci Sergio.
    Du coup, j'ai tout ce qu'il me faut pour avancer.
    Bonne journée à toi aussi.

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    avril 2023
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : avril 2023
    Messages : 102
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    J'imagine que c'était ironique, il y a une vie en dehors de Delphi,Firebird, etc.
    J'avais pas tout bien lu ton message, comme d'hab.
    Oui c'était ironique, suite à ma critique des composants FireDac

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    avril 2010
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2010
    Messages : 234
    Points : 512
    Points
    512
    Par défaut
    Bonsoir,

    Il est aussi possible de tester la variable du contexte ROW_COUNT.
    Définition dans https://firebirdsql.org/file/documen...reference.html
    Mais ça existait déjà en FB 1.5 donc aussi dans FB 2.5
    The ROW_COUNT context variable contains the number of rows affected by the most recent DML
    statement (INSERT, UPDATE, DELETE, SELECT or FETCH) in the current trigger, stored procedure or
    executable block.

    André

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    avril 2023
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : avril 2023
    Messages : 102
    Points : 31
    Points
    31
    Par défaut
    Merci alanglet. Bien noté. Je jetterai un coup d'oeil.

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

Discussions similaires

  1. [MySQL] PDO Afficher le nombre de lignes insérées dans la base
    Par nicoreims dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/01/2016, 12h41
  2. compter le nombre de ligne traitées update
    Par batou22003 dans le forum DB2
    Réponses: 2
    Dernier message: 01/08/2012, 08h34
  3. [Oracle 10g] export datapump : vérifier le nombre de lignes
    Par nico1973 dans le forum Import/Export
    Réponses: 5
    Dernier message: 10/10/2010, 10h53
  4. Récupérer le nombre de lignes impactées : update/delete
    Par romano62880 dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 18/05/2010, 19h23
  5. Vérifier le nombres de lignes et colonnes utilisé
    Par derin dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/09/2008, 15h22

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