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 :

Connaitre Impact d'une requete avant execution


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 55
    Par défaut Connaitre Impact d'une requete avant execution
    Bonjour,

    Je souhaiterai savoir si il est possible de connaitre l'impact de l'exécution d'une requete (par exemple un delete) avant son execution, afin d'avertir l'utilisateur

    Par avance merci ....

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 636
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Cette question n'a pas vraiment de sens

    Les lignes impactées par un ordre SQL ne sont pas la propriété d'un utilisateur, le login parfois enregistré comme mouchard dans une ligne de base de données est informatif, ce n'est pas un titre de propriété
    L'impact d'un DELETE concerne plusieurs domaines fonctionnels
    Par exemple, supprimer un client concerne à minima le domaine commercial et le domaine comptable, mais sans doute aussi le domaine statistiques, la relation client, la GED etc...
    Et dans chaque service, il y a plusieurs utilisateurs concernés.
    Sans compter que l'utilisateur qui a créé le client, a peut être changé de domaine ou quité l'entreprise pour être remplacé par une autre personne

    Donc analyser le mouchard de login de la personne qui a créé ou fait la dernière mise à jour ne permet pas d'alerter les personnes concernées avant une suppression

  3. #3
    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
    Si c'est l'impact physique en terme de ressource, coût d’exécution... oui, il suffit de demander le plan de requête.

    Si c'est l'impact logique en terme de conséquence dans la base... oui il suffit de démarrer une transaction explicite de ne pas la finaliser (ni COMMIT, ni ROLLBACK) et de passer diverses requêtes SELECT d'investigation pour se rendre compte des effets.

    Si c'est l'impact logique en terme de conséquence, certains SGBDR comme SQL Server, permettent de savoir en retour quelles sont les lignes impactées et leurs valeurs avant et après l'exécution de la requête.
    Dans SQL Server, c'est la clause OUTPUT qui permet de savoir cela en renvoyant un DATASET avec les valeurs des colonnes que vous souhaitez connaître avant et après

    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/ * * * * *

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 55
    Par défaut
    Merci pour vos réponses

    Un exemple :

    Delete from table where idParent =12

    A l’exécution de cette requête, 128 lignes seront supprimées (c'est un exemple)

    Comment connaitre ce nombre avant de lancer l’exécution

    J'ai pensé a remplacé par un select, mais je me demande s'il n'y a pas mieux ...

    Tout ça avec GD2

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 636
    Billets dans le blog
    10
    Par défaut
    Effectivement, vous pouvez remplacer le delete par un select count(*)

    Mais si dans l'intervalle des insertions ou des suppressions sont faites par un autre thread, le résultat ne sera qu'indicatif, sauf à poser un verrou exclusif dans votre transaction

Discussions similaires

  1. Réponses: 14
    Dernier message: 23/05/2018, 12h45
  2. Tester si une requete est executée !
    Par owenho dans le forum Langage
    Réponses: 2
    Dernier message: 26/07/2012, 16h13
  3. Réponses: 7
    Dernier message: 29/11/2007, 14h49
  4. Question avant execution d'une requete
    Par viny123456789 dans le forum Requêtes et SQL.
    Réponses: 13
    Dernier message: 10/07/2007, 12h01
  5. Temps de réalisation d'une requete avant lancement
    Par jcachico dans le forum Outils
    Réponses: 6
    Dernier message: 12/04/2006, 15h27

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