none
une requète qui affecte 0 enregistrements RRS feed

  • Question

  • Bonjour

    J'ai une requête:

    UPDATE T_WORK_INFORMATION SET  siIdStateDocument = 5 WHERE( vcDocument = 'D:\usr\These\Tailgate\Spx\TailgateQuintuplets.doc')

    qui retourne 0 enregistrements affecté, que se soit par l'exécutable ou sous MSSMS

    quelqu'un peut il me donner l'explication?


    Jean Noël Martin

    lundi 21 juillet 2014 02:33

Réponses

Toutes les réponses

  • Bonjour

    Pouvez-nous dire ce que retourne : 

    SELECT * 
    FROM T_WORK_INFORMATION 
    WHERE( vcDocument = 'D:\usr\These\Tailgate\Spx\TailgateQuintuplets.doc')

    Ensuite, comment vous vérifiez qu'il n'y a aucun enregistrement qui est affecté ?

    dans la meme transaction, pour le voir rapidement, il faut utiliser : 

    select @@rowcount

    Directement après l'update (sans GO sans print ...).

    lundi 21 juillet 2014 18:08
  • Le select ne retourne un nombre d'enregistrements différent de 0 que si il n'a pas de clause Where

    J'ai également essayé

    SELECT * FROM T_WORK_INFORMATION WHERE vcDocument = 'D:\\usr\\These\\Tailgate\\Spx\\TailgateQuintuplets.doc'
    sans plus de résultat


    Jean Noël Martin


    mardi 22 juillet 2014 08:15
  • Le WHERE est une clause de filtrage, si vous souhaitez modifier dans la table : T_WORK_INFORMATION la colonne siIdStateDocument pour les lignes dont la colonne vcDocument à la valeur 'D:\usr\These\Tailgate\Spx\TailgateQuintuplets.doc', l'update est juste.

    Pour en avoir le cœur net sur le fait d'avoir des données ou non à modifier jouer :

    SELECT * 
    FROM T_WORK_INFORMATION (NOLOCK)
    WHERE( vcDocument = 'D:\usr\These\Tailgate\Spx\TailgateQuintuplets.doc')


    Si dans cette requête remonte 0 ligne, cela signifie qu'il n'y a pas de ligne répondant à la clause de filtrage et donc qu'il n'y a pas de ligne à modifier.

    Si des lignes sont remontées avec ce "nouveau" select, cela signifie qu'il y a un aspect transactionnelle à prendre en compte.

    Ce select va lire toutes les lignes qu'elles soient en cours de modification ou non (par votre transaction ou une autre), c'est l'équivalent du niveau d'isolation : READ_UNCOMMITED.

    mardi 22 juillet 2014 08:25
  • J'ai le même résultat mais dans la table il y a un enregistrement qui contient le terme WHERE

    je joins l'enregistrement


    Jean Noël Martin


    mardi 22 juillet 2014 09:37
  • La colonne vcDocument est de quel type ainsi que ça collation ? car avant de faire marcher l'update, il faut réussir à faire marcher le select. Il est donc possible que ça ne remonte aucune ligne à cause d'une différence de type de colonne. 

    mardi 22 juillet 2014 11:55
  • La capture d'écran est difficilement exploitable, on ne voit pas l'ensemble des datasets.

    Le select @@rowcount est utile ici, seulement après l'update.

    mardi 22 juillet 2014 12:17
  • vcDocument est de type System::String^

    Jean Noël Martin

    mardi 22 juillet 2014 13:40
  • J'ai remplacé le nom du document par non numéro

    Ça a réglé le problème


    Jean Noël Martin

    • Marqué comme réponse JeanNoel53 mercredi 23 juillet 2014 19:23
    mercredi 23 juillet 2014 19:23