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 :

question sur table temporaire


Sujet :

SQL Firebird

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    839
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 839
    Points : 262
    Points
    262
    Par défaut question sur table temporaire
    bonjour,

    Petite question sur les GTT.

    j'utilise les GTT pour la première fois, et il y a un truc qui m'echappe :

    A quoi sert le mode 'ON DELETE ROW' ? A quelle utilisation typique ?

    je travaille avec des champs persistant, et lorsque l'on fait un 'post' suite à une insertion (avec un dbnavigator par exemple) , il faut bien fait un commit pour que les données soient enregistrée et si on 'commit' alors on perd les données ?

    merci

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 952
    Points
    40 952
    Billets dans le blog
    62
    Par défaut
    A quoi sert le mode 'ON DELETE ROW' ? A quelle utilisation typique ?
    il se trouve que je me trouve devant ce genre d'utilisation .
    L'intérieur d'une procédure est une transaction (fermée a la fin sauf demande explicite), c'est dans ce cas de figure que j'ai utilisé une GTT , certes , j'aurais pu m'en passer mais cela au prix d'une codification beaucoup plus complexe

    en gros , voici le shéma :
    2 procedures
    PROCEDURE FILLGTT;
    PROCEDURE PRINCIPALE;
    la procédure principale appelle FILLGTT puis fait des SELECT dessus pour envoyer des résultats .

    Je ne pense pas qu'une GTT soit utilisable via un programme Delphi (selon ce que j'ai compris) . même en ON COMMIT PRESERVE ROWS . En effet que se passera t'il si 2 sessions sont ouvertes :
    - avec le même USER
    - avec 2 Users différents
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 245
    Points : 534
    Points
    534
    Par défaut
    Bonsoir,

    Citation Envoyé par SergioMaster Voir le message
    Je ne pense pas qu'une GTT soit utilisable via un programme Delphi (selon ce que j'ai compris) . même en ON COMMIT PRESERVE ROWS . En effet que se passera t'il si 2 sessions sont ouvertes :
    - avec le même USER
    - avec 2 Users différents
    Oh que si, c'est utilisable

    Description: Global temporary tables have persistent metadata, but their contents are transaction-bound (the
    default) or connection-bound. Every transaction or connection has its own private instance of a GTT, isolated
    from all the others. Instances are only created if and when the GTT is referenced, and destroyed upon transaction
    end or disconnection.

    L'instance de la GTT est bien particulière à chaque connexion, donc à l'utilisateur et est détruite à la fermeture de la connexion dans le cas de ON COMMIT PRESERVE ROWS.
    Avec ON COMMIT DELETE ROWS (défaut), elle est détruite à chaque commit de la transaction.

    André

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 952
    Points
    40 952
    Billets dans le blog
    62
    Par défaut
    L'instance de la GTT est bien particulière à chaque connexion, donc à l'utilisateur et est détruite à la fermeture de la connexion dans le cas de ON COMMIT PRESERVE ROWS.
    Bon , autant pour moi et je prend acte et je vais même (peut être) m'en servir
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 245
    Points : 534
    Points
    534
    Par défaut
    Bonjour,

    Que l'on n'ait pas besoin de s'occuper de vider ces GTT est peut-être intéressant, mais le meilleur, c'est que les données de ces tables étant stockées dans des fichiers temporaires séparés, le fichier de la base est moins désorganisé et fractionné.

    André

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    839
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 839
    Points : 262
    Points
    262
    Par défaut infos complémentaire
    Bonjour,

    Alors si j'ai bien compris:
    "Si il y a plusieurs utilisateurs qui utilisent la table, chacun ne voit que les données le concernant, qui seront de toute facon effacées à la fin de la transaction ou connection"

    Cordialement

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 245
    Points : 534
    Points
    534
    Par défaut
    Citation Envoyé par looping Voir le message
    chacun ne voit que les données le concernant
    C'est çà et plus exactement, les données qu'il y aura insérées dans la même transaction ou la même connexion selon la définition de la table temporaire.

    André

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/05/2008, 11h56
  2. Obtenir des informations sur table temporaire
    Par davidou2001 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/06/2007, 16h36
  3. Réponses: 1
    Dernier message: 20/04/2006, 17h18
  4. [Global temporary]Transaction sur table temporaire
    Par tanatiel dans le forum Oracle
    Réponses: 9
    Dernier message: 12/10/2005, 16h38
  5. Question sur Table-borders
    Par GDVL dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 20/10/2004, 15h10

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