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

PHP & Base de données Discussion :

Connaitre le nombre de lignes affectées par un update à l'avance [Oracle]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Par défaut Connaitre le nombre de lignes affectées par un update à l'avance
    Bonjour,

    tout est dit dans le titre :

    Comment connaitre le nombre de lignes affectées par un update à l'avance ?
    C'est-à-dire, sans faire le valider (sans commit).

    Pour mon appli, je veux être sûr qu'il est n'y ait pas plus d'une ligne à jour (surtout pour des updates sur plusieurs tables).

    J'ai pensé à un select préliminaire avec le même where et mêmes tables ... mais je ne trouve ça pas top.

    Merci par avance

  2. #2
    Membre émérite
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Par défaut
    c'est normal que j'a rien compris ?

  3. #3
    Membre chevronné Avatar de Joe Le Mort
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 392
    Par défaut
    Citation Envoyé par lionheart33806
    Bonjour,

    tout est dit dans le titre :

    Comment connaitre le nombre de lignes affectées par un update à l'avance ?
    C'est-à-dire, sans faire le valider (sans commit).

    Pour mon appli, je veux être sûr qu'il est n'y ait pas plus d'une ligne à jour (surtout pour des updates sur plusieurs tables).

    J'ai pensé à un select préliminaire avec le même where et mêmes tables ... mais je ne trouve ça pas top.
    Si tu es en mysql, je ne pense pas que tu puisses, en oracle par contre oui.
    Ouais, je pense que le select serait utilisé avant de faire ton update.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Par défaut
    Citation Envoyé par Joe Le Mort
    Si tu es en mysql, je ne pense pas que tu puisses, en oracle par contre oui.
    Ouais, je pense que le select serait utilisé avant de faire ton update.
    Tu ferais comment exactement avec Oracle ?
    Et pour MySql ?

  5. #5
    Membre émérite
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Par défaut
    Je ne sais pas si j'ai compris ce que tu voulais faire mais, tu as mysql_num_rows qui te permet de savoir combien de ligne t'a requete t'a renvoyée...ici un update...

  6. #6
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Citation Envoyé par SnakemaN
    Je ne sais pas si j'ai compris ce que tu voulais faire mais, tu as mysql_num_rows qui te permet de savoir combien de ligne t'a requete t'a renvoyée...ici un update...
    Oui mais là le problème c'est que c'est avant la requête et pas après...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Par défaut
    Citation Envoyé par JWhite
    Oui mais là le problème c'est que c'est avant la requête et pas après...
    Exactement, le but est connaitre le nombre de ligne pour savoir si "on" va vraiment faire le update ou pas.

    - Je construis le update
    - Je teste magiquement le nombre de lignes qu'il va modifier
    - Si nombre de lignes égal 1, faire le update

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 102
    Par défaut
    Salut,

    juste pour tordre cette idée erronée, les transaction sont possible sous mysql, et pour des versions released, tout comme la gestion de l'intégrité de données (clés étrangère). A condition de typer ses tables INNODB.
    le gel de l'autocommit pour une connexion se fait comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    set autocommit = 0
    ou alors tout simplement, pour une transaction ponctuelle, encapsuler le groupe de requetes que l'ont veux grouper en transaction par les instruction BEGIN et COMMIT/ROLLBACK

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    mysql_query('begin');
    mysql_query($requete);
    $aff = mysql_affected_rows():
    mysql_query('rollback');
    realisable déjà à coup sur sous mysql 4.1.10 (avant jene sais pas).

  9. #9
    Membre émérite
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Par défaut
    Citation Envoyé par lionheart33806
    ....
    Comment connaitre le nombre de lignes affectées par un update à l'avance ?
    C'est-à-dire, sans faire le valider (sans commit).
    .....
    Ahh en fait tu fais un update de toute table mais tu veux savoir combien d'enregistrement on été modifié ?

    Mais je ne sais pas exactement comment marche un update, est-ce qu'il met a jour tout les champs meme si la nouvelle valeur et égale a l'ancienne, dans ce cas le mysql_num_row te renvera toutes tes lignes, OU BIEN est-ce que il y un test "automatique" pour voir si la nouvelle valeur et égale a l'ancienne si c'est le cas il passe au suivant, dans ce cas le mysql_num_rows serait de mise...

  10. #10
    Membre émérite
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Par défaut
    Arrf grilled

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/01/2015, 18h26
  2. Réponses: 4
    Dernier message: 13/11/2006, 18h05
  3. [Oracle] Nombre de ligne affecté par un update
    Par vimanas dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/09/2006, 16h24
  4. [C#] Comment connaître le nombre de lignes affectées par un Select ?
    Par diaboloche dans le forum Accès aux données
    Réponses: 6
    Dernier message: 21/09/2006, 13h56
  5. [9i] Nombre de lignes affectées par un update
    Par yac dans le forum Oracle
    Réponses: 5
    Dernier message: 13/01/2006, 15h59

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