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 :

[TRANSACTION] Erreur dans requete


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut [TRANSACTION] Erreur dans requete
    Bonjour à tous !

    Je pense avoir bien compris le rpincipe des transactions. D'ailleurs cela march parfaitement dans mon script.

    Mais j'aurais une question.

    Les transactions font un ROLLBACK si il y a un probleme d'integrité des données, etc...

    Mais si ma requete plante (un champs null qui ne doit pas l'etre par exemple), il continue et du coup modifie ce qui suit !
    Est-il possible de dire qu'a la moindre erreur dans une requete SQL, il fait un Rollback ?

    Merci d'avance et pardonnez moi, je debute en transactions

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Tu es sous Oracle, je pense ?

    Les erreurs en SQL n'étant pas "récupérées" par une gestion d'erreur, le ROLLBACK n'intervient pas dans ce cas, puisque rien n'est à valider pour l'instruction qui a renvoyé une erreur ?

    En fait, choisir en fin de script SQL si l'on doit valider ou annuler le traitement de la transaction requiert une structure conditionnelle, qui n'est (à ma connaissance) pas gérable en SQL seul.

  3. #3
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut
    En fait, je suis sous postgreSQL et je developpe en php5.

    Oui, je me doutais de ce que tu viens d'ecrire et malheureusement tu me confirme. Merci beaucoup.

    Comme tu le dis, ca ne génère qu'une erreur SQL mais pas d'erreur pour les transactions. Il m'est donc impossible de savoir si tout s'est bien passé.

    En ajoutant les transactions, j'evite les erreurs de serveur mais j'ajoute les erreurs de requete que je verifias avant mais que je ne peux plus faire a présent.

    Fais ...

    Si toutefois, quelqu'un connait une bidouille pour gerer cela, je lui paie un tonneau

  4. #4
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut
    Bon apparrement PEAR:B gère cela sans probleme.

    J'utilise cette API depuis le debuit mais je n'avais aps fait attention à cette possibilité.

    Merci beaucoup quand meme

  5. #5
    Expert éminent
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Points : 7 291
    Points
    7 291
    Par défaut
    Je connais bien Oracle et pas du tout Postgres mais les exceptions sous Oracle sont très bien gerées:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    BEGIN
            ... code here ...
    EXCEPTION
            WHEN ... THEN
                ROLLBACK;
                ... code here ...
    END;
    En Pl/sql on peut récuperer les exceptions et les exceptions sont bien remontées dans les clients appelants (exemple dans Delphi avec try except end)

    En utilisant la fonction recherche de http://www.postgresql.org avec le mot exception je tombe là dessus:
    Example 35-7. Porting a Procedure from PL/SQL to PL/pgSQL

    Exemple qui montre que Postgres a l'air bien de gérer les exceptions. Si le langage procédural (plpgsql semble-t-il) de postgres reconnait les exceptions, il n'y a pas de raison que les clients, et en particulier php, ne les gère pas.

    Donc certes les exceptions ne se gèrent pas en SQL "pur" mais lors d'une erreur SQL la base de données envoit bien une exception gérable en l'occurence par php. (Ceci dans le cadre d'une transaction ou non).

  6. #6
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut
    Excellent !!

    je te remercie beaucoup Philipp (je suppose que c'est ton nom lol).

    Je vais tester ca des que possible. Ce serait le plus efficace et propre en effet.
    Je ne pense jamais a ces exceptions !! Nickel

  7. #7
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Citation Envoyé par Xo
    Les erreurs en SQL n'étant pas "récupérées" par une gestion d'erreur ...
    Attention phili_b, je parlais bien de SQL, et non de PL/SQL !

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 924
    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 924
    Points : 51 724
    Points
    51 724
    Billets dans le blog
    6
    Par défaut
    Il n'existe aucune instruction SQL hormis l'exception de déférabilité qui induit un ROLLBACK.
    Autrement dit, la gestion d'erreur n'a rien à voir avec la gestion des transactions. Et heureusement !

    A +

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/09/2007, 15h51
  2. erreur dans requete du à l'insertion de la date
    Par maxeur dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 02/02/2007, 14h34
  3. [erreur postgre] Erreur dans requete
    Par leroidje dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 10/11/2006, 12h18
  4. URGENT : Erreur dans requete
    Par shub dans le forum Access
    Réponses: 5
    Dernier message: 21/06/2006, 12h37
  5. erreur dans requete Sql
    Par flOZ dans le forum Requêtes
    Réponses: 2
    Dernier message: 02/05/2006, 03h49

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