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 :

Delete sur plusieurs tables


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 19
    Points : 8
    Points
    8
    Par défaut Delete sur plusieurs tables
    Je dois supprimer completement le projet numéro 2 des tables suivantes

    Projet
    idProjet Description



    EtapesProjet (Table d'association)
    idProjet idEtape Date


    RessourcesProjet (Table d'association)
    idProjet idEmploye nbHeures


    Premiere question, parmis les 2 codes suivant, est-ce qu'il y en a un meilleur que l'autre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DELETE rp, ep 
    FROM RessourcesProjet rp, EtapexProjet ep
    Where rp.idProjet=2 AND ep.idProjet = 2
    ;
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DELETE rp, ep
    FROM RessourcesProjet as rp
    INNER JOIN  EtapexProjet as ep on rp.idProjet=ep.idProjet
    Where rp.idProjet=2
    ;
    et apres je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DELETE FROM Projet
    Where idProjet=2
    ;
    J'ai essayé de différentes facon avec des join, est-ce qu'il y a une facon d'envoyer une seule commande pour supprimer le projet 2 de toutes les tables ?

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    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 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Si votre SGBD le permet (quel est il ?), le plus simple est de mettre en oeuvre l'intégrité référentielle grâce à laquelle la suppression du projet supprimera automatiquement les lignes dans les tables où l'identifiant projet est référencé

    Certains SGBD autorisent la syntaxe DELETE TAB1, TAB2.... TABn.

    Sinon il faut supprimer unitairement dans chaque table puis commiter l'ensemble

  3. #3
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 1 679
    Points
    1 679
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Bonjour,

    Si votre SGBD le permet (quel est il ?), le plus simple est de mettre en oeuvre l'intégrité référentielle grâce à laquelle la suppression du projet supprimera automatiquement les lignes dans les tables où l'identifiant projet est référencé
    Bonjour,

    Pour préciser la remarque de @escartefigue, s'il y a des clés étrangères de EtapesProjet et RessourcesProjet sur la clé primaire idProjet de Projet, une clause ON DELETE CASCADE permet de forcer la suppression des lignes "filles" lors de la suppression de lignes dans la table "mère" Projet.

    Deux avantages : l'intégrité référentielle est conservée : pas de lignes orphelines dans les tables "filles" ; une seule instruction DELETE est nécessaire.

Discussions similaires

  1. DELETE sur plusieurs tables
    Par kazuo0 dans le forum Requêtes
    Réponses: 5
    Dernier message: 21/12/2007, 18h24
  2. Delete sur plusieurs tables
    Par Megoy dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/05/2007, 10h41
  3. Delete sur plusieurs tables
    Par estelledany dans le forum Langage SQL
    Réponses: 5
    Dernier message: 24/07/2006, 11h16
  4. [MSDE] Delete sur plusieurs tables ?
    Par hardballer dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 03/05/2006, 10h13
  5. delete sur plusieurs tables
    Par drinkmilk dans le forum Oracle
    Réponses: 11
    Dernier message: 22/03/2006, 16h43

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