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

Développement SQL Server Discussion :

Peut-on simuler un update pour s'assurer du résultat avant ?


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 685
    Par défaut Peut-on simuler un update pour s'assurer du résultat avant ?
    Bonjour,

    Est-il possible de 'simuler' un UPDATE ?

    Exemple : je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE    MATABLE
    SET              CHAMP1 = 999999
    WHERE     (CHAMP2 = 0)
    Je souhaiterais "voir" ce que cela donnera avant de le faire en réel. Pour éviter de faire une mauvaise requête update et avoir des mauvaises conséquences.

    Merci pour vos infos
    Thib

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    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 : 22 010
    Billets dans le blog
    6
    Par défaut
    Il suffit de gérer une transaction en faisant un ROLLBACK...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    BEGIN TRANSACTION
     
    UPDATE MATABLE
    SET    CHAMP1 = 999999
    WHERE  CHAMP2 = 0
     
    -- tout un tas d'autres requêtes
     
    ROLLBACK TRANSACTION
    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/ * * * * *

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 685
    Par défaut
    Merci j'ai essayé mais je ne comprends pas comment je peux 'constater' si mon update est correct.

    Le rollback m'annule mon update

    du coup, après si je fais un select pour voir mes enregistrements...je ne vois aucun changement ?

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Vous pouvez pour cela utiliser la clause OUTPUT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    BEGIN TRANSACTION
     
    UPDATE MATABLE
    SET CHAMP1 = 999999
    OUTPUT INSERTED.CHAMP1, DELETED.CHAMP1
    WHERE (CHAMP2 = 0)
     
    ROLLBACK TRANSACTION
    INSERTED et DELETED sont deux tables virtuelles qui ont exactement la même structure que la table qui subit l'UPDATE.
    Elles reflètent respectivement les nouvelles et anciennes valeurs prises par les colonnes de lignes candidates à l'UPDATE.

    Vous ne pouvez pas l'utiliser si un trigger est en place sur la table qui subit l'UPDATE, puisqu'on peut utiliser ces tables virtuelles également dans un trigger.

    @++

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 685
    Par défaut
    Merci

    Mais cette fois, j'obtiens une erreur
    La table cible 'F_COMPTET' de l'instruction*DML ne peut pas comporter de déclencheurs activés si l'instruction contient une clause OUTPUT sans clause INTO.
    J'ai l'impression que cela me parle de ce que vous me disiez sur les triggers.
    Je vais essayer de chercher sur le Net des infos sur la clause INTO pour voir si je peux y arriver....

  6. #6
    Membre éclairé
    Homme Profil pro
    Certifié Oracle Essbase/Planning
    Inscrit en
    Juin 2002
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Certifié Oracle Essbase/Planning

    Informations forums :
    Inscription : Juin 2002
    Messages : 42
    Par défaut
    test en re7

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/12/2005, 15h52
  2. Probleme de requete UPDATE pour modifier de champs ds DBGRID
    Par cmoimeme dans le forum Bases de données
    Réponses: 26
    Dernier message: 06/12/2005, 12h56
  3. Formulation d'un UPDATE (pour éviter un curseur)
    Par GoLDoZ dans le forum Oracle
    Réponses: 2
    Dernier message: 15/11/2005, 16h35
  4. update pour calcul pourcentage (SQL SERVER 2000)
    Par meufeu dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/09/2005, 09h04
  5. [sql] update pour debutant
    Par zebulix13 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/06/2004, 15h45

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