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
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 138
    Points : 123
    Points
    123
    Par défaut DELETE sur plusieurs tables.
    Bonjour,

    Alors, ma requête est simple, je désire supprimer des "commandes", donc il y a la table Commande qui est concernée, Developpement_Commande, Copie_Commandee, ... donc bref toutes ces tables sont reliées par l'id_Commande.

    Mon code non fonctionnel bien entendu ^^ : (Je mets pas le mysql_query()... dans l'exemple car inutile ^^).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    $sql="DELETE FROM 
    		Commande AS c, Developpement_Commande AS dc, Copie_Commandee AS cc, Agrandissement_Commande AS ac 
    		WHERE c.id_Commande = '".$_POST['annul']."'
    		|| dc.id_Commande = '".$_POST['annul']."'
    		|| cc.id_Commande = '".$_POST['annul']."'
    		|| ac.id_Commande = '".$_POST['annul']."'
    		";
    Voilà, l'erreur générée est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE c.id_Commande = '22' || dc.id_Commande = '22' || cc.id_Commande = '22'' at line 3
    Ce qui veut dire que je n'ai pas la bonne syntaxe, alors si quelqu'un la connaissait, ca m'aiderai pas mal ^^.

    Et j'allais oublié, je veux pas utiliser les relation ON DELETE CASCADE car mes tables sont de types MyISAM.

    En attendant un chouilla d'aide.

    Cordialement,

  2. #2
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    DELETE doit se faire sur une seule table à la fois.

    Si tu as choisi le moteur InnoDB pour tes tables et utilisé judicieusement les contraintes de clés étrangères et notamment le ON DELETE CASCADE, la suppression dans la table des commandes devrait supprimer également les lignes correspondantes dans les autres tables associées.

    Sinon, il faut commencer par supprimer les lignes correspondant à ta commande dans toutes les tables associées par autant de requêtes qu'il y a de tables associées avant de supprimer la ligne de la table commande.

    C'est là qu'on voit que ça vaut le coup d'utiliser les clés étrangères !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 138
    Points : 123
    Points
    123
    Par défaut
    Merci pour ta réponse qui confirme ce que je pensais...
    Mais j'avais décidé de ne pas utiliser InnoDB.

    Cordialement,

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

Discussions similaires

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

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