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

 PostgreSQL Discussion :

La commande commit ?


Sujet :

PostgreSQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 412
    Points : 149
    Points
    149
    Par défaut La commande commit ?
    Bonjours,

    Si j'ai bien compris la commande comit va écrire sur le disque.

    Mai une fois que c'est fait plus moyen de crée une table (c'est un exemple).
    j'obtiens un message du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    terminate called after throwing an instance of 'pqxx::usage_error'
      what():  Error executing query .  Attempt to activate transaction<READ COMMITTED> which is already closed
    Abandon
    je doit faire quoi pour pouvoir poursuivre les autres requêtes sql

    je précise que j'utilise posgresql 8.4 sous debian squeez(stable) que j'y accède en c++ avec la lib libpqxx, mai je me ser aussi du shell si besoins

    Merci d'avance

  2. #2
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 73

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Points : 126
    Points
    126
    Par défaut
    Bonjour,
    Avant de lancer un commit, avez vous bien lancé un "start transaction" ?
    Bonne journée
    MS

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 412
    Points : 149
    Points
    149
    Par défaut
    bonjours, Merci pour votre réponse

    je me connect a la base puis utilse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    		p_connect	= new pqxx::connection(cCT.StringChar(login));
    		p_work 		= new pqxx::work (*p_connect);
    documentation de la lib:
    pour la connection (je ne peux pas coller ici sa polluerai le forum)
    http://pqxx.org/devprojects/libpqxx/...tml/Reference/
    pour works
    http://pqxx.org/devprojects/libpqxx/...ansaction.html

    ensuite sa me permet de crée mes première tables

    je vais voir a quoi correspond un start transaction
    (je suis un gros débutant en base de donnée)

    merci encore pour ta réponse

  4. #4
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 73

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Points : 126
    Points
    126
    Par défaut
    Bonjour,
    un "start transaction" débute un bloc de transaction et commit la valide.
    Rollback l'invalide.
    L'utilité est de s'assurer que la transaction se déroule entièrement ou pas du tout (par ex en cas de coupure de courant).
    Bonne journée
    MS

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 412
    Points : 149
    Points
    149
    Par défaut
    j'étais pas loin works doit être rappeler pour la nouvelle transaction (attention a la suppression du pointeur pour ceux qui code en c / c++)

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par panthere noire Voir le message
    Bonjours,

    Si j'ai bien compris la commande comit va écrire sur le disque.
    COMMIT valide une transaction. Rien à voir avec l'écriture des données sur le disque qui dans un SGBDR C/S est asynchrone.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 412
    Points : 149
    Points
    149
    Par défaut
    Merci pour le complément

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

Discussions similaires

  1. [11gR2] Commit implicite OK même si commande échoue?
    Par Ikebukuro dans le forum SQL
    Réponses: 2
    Dernier message: 22/04/2015, 13h26
  2. [TortoiseSVN] Impossible de faire un "commit" en ligne de commande
    Par estmars dans le forum Subversion
    Réponses: 8
    Dernier message: 02/11/2011, 11h44
  3. [SSIS] [2K5] Commiter un OLDB command
    Par SebastienM dans le forum SSIS
    Réponses: 1
    Dernier message: 16/07/2009, 18h17
  4. voir les commandes du COMMIT
    Par arnobase dans le forum Oracle
    Réponses: 7
    Dernier message: 14/02/2007, 13h53
  5. Réponses: 3
    Dernier message: 02/09/2002, 18h49

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