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

MS SQL Server Discussion :

récupérer l'id d'un delete


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 55
    Par défaut récupérer l'id d'un delete
    Bonjour,

    voila j'ai une requête où je fais un delete d'une table. Le problème est qu'il y a une jointure sur cette table et j'aimerais pouvoir supprimer aussi les éléments de l'autre table?

    par exemple j'ai une table distance et une table distanceExtension qui sont liées par leur identifiant. j'aimerais que lorsque je supprime plusieurs enregistrements dans la table distanceExtension, ça supprime aussi dans la table distance en fonction de l'id

    je ne sais pas si c'est trop clair
    si vous voulez d'autres explications dites le moi

    Merci d'avance pour l'aide

  2. #2
    Membre expérimenté
    Inscrit en
    Février 2009
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 224
    Par défaut
    bonjour,
    Si j'ai bien compris votre demande vous souhaitez "cascader" le DELETE sur la table détail lors d'un delete sur la table maitre.
    Si c'est le cas, il est nécessaire de définir un trigger INSTEAD OF sur la table maitre pour l'action DELETE. Dans ce trigger vous allez supprimer (DELETE) les informations de niveau DETAIL puis supprimer les informations sur la table maitre

  3. #3
    Membre averti
    Inscrit en
    Février 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 55
    Par défaut
    je ne comprends pas trop ce que vous entendez par "détail" et "maitre" et quel genre de trigger faudrait-il que je fasse?

  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,

    Faites une jointure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    -- Supprime d'abord les distances
    DELETE FROM dbo.distance
    FROM dbo.distance D
    JOIN dbo.distanceExtension DE ON D.IDDistance = DE.IDDistance
    WHERE DE.uneColonne = uneValeur
     
    -- Supprime ensuite leurs extensions
    DELETE FROM dbo.distanceExtension
    WHERE uneColonne = uneValeur
    @++

  5. #5
    Membre averti
    Inscrit en
    Février 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 55
    Par défaut
    J'avais déjà essayé avec des jointures mais ça na marchait pas...

    J'ai bidouillé un truc avec des requêtes et ça à l'air de marcher.

    Je sélectionne d'abord les identifiants des lignes que je veux supprimer. ensuite je les supprime dans la table distanceExtension et enfin dans un boucle for je supprime les lignes de la table distance pour chaque idenifiant auparavant sélectionnés...

    Je ne sais pas si c'est bien mais ça marche, si quelqu'un pouvait me dire si j'ai le droit de faire ça...

    En tout cas merci beaucoup pour l'aide

  6. #6
    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
    Je sélectionne d'abord les identifiants des lignes que je veux supprimer. ensuite je les supprime dans la table distanceExtension et enfin dans un boucle for je supprime les lignes de la table distance pour chaque idenifiant auparavant sélectionnés...
    Le contrôle FOR n'existe pas en T-SQL, donc je suppose que vous faites cela avec une application.
    Or à mon sens ce n'est pas le rôle de l'application, qui est là pour extraire des données de la BD, demander des traitements à celle ci à travers un jeu de procédures stockées.

    Donnez-nous donc la structure de vos deux tables, pour que nous puissions vous donner la requête que vous recherchez

    @++

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

Discussions similaires

  1. Récupérer le nombre de lignes impactées : update/delete
    Par romano62880 dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 18/05/2010, 19h23
  2. Récupérer les erreurs Oracle pendant les insert/update/delete
    Par robinson50 dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 05/03/2009, 11h44
  3. Récupérer des fichiers "deletés" sur DVD UDF
    Par Jimalexp dans le forum Windows
    Réponses: 4
    Dernier message: 14/01/2009, 12h46
  4. Réponses: 8
    Dernier message: 26/06/2007, 09h12
  5. Récupérer l'espace ds les tablespaces apres delete
    Par mickjack dans le forum Oracle
    Réponses: 11
    Dernier message: 16/05/2006, 17h31

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