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

 MySQL Discussion :

suppression d'une ligne dans une table


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 28
    Par défaut suppression d'une ligne dans une table
    Bonjour,

    Je tente actuellement de supprimer une information dans ma table et MYSQL me retourne une erreur.

    Erreur

    Requête SQL:

    DELETEFROM`musiclesson`.`style`WHERE`style`.`IDStyle`=3

    MySQL a répondu:
    #1054 - Unknown column 'IDStyle' in 'where clause'
    Or ma colonne existe bien et je peux y inséré des informations...
    IDStyle est une clé primaire de ma table "style", et clé secondaire de ma table "partition".
    Je tente de supprimer une ligne de ma table "style". J'ai aussi mis en place quelques trigger afin de gérer les supression dans les 2 tables.

    Une idée ?

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    Donne la structure de tes tables.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 28
    Par défaut
    style :


    1 IDStyle int(11) AUTO_INCREMENT primary key

    2 nom varchar(20)

    3 gamme varchar(20)
    partition :

    1 IDPartition int(3) AUTO_INCREMENT primary key

    2 nom varchar(50)

    3 artiste varchar(50)

    4 album varchar(50)

    5 difficultee int(2)

    6 remarque varchar(50)

    7 accordage varchar(20)

    8 IDStyle int(11) foreign key (style)

    trigger style-partition :

    DROP TRIGGER IF EXISTS `suppr`
    CREATE TRIGGER `suppr` BEFORE DELETE ON `style`
    FOR EACH ROW begin
    delete from partition
    where OLD.IDStyle=IDStyle;
    end
    trigger style-enregistrement :

    DROP TRIGGER IF EXISTS `suprStyleEnre`
    CREATE TRIGGER `suprStyleEnre` AFTER DELETE ON `style`
    FOR EACH ROW begin
    delete from enregistrement
    where OLD.IDStyle=IDStyle;
    end
    Voilà. Sinon je travaille sous phpmyadmin

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    Les requêtes que tu présentes dans tes triggers sont différentes de la requête en erreur de ton premier message. Tu as résolu ton problème ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 28
    Par défaut
    je cherche à supprimer une ligne de ma table "style". Les triggers je les indiques desfois que le problème viendrait de l'un d'entre eux.

    Dans mon programme je supprime juste un style de ma liste, cela ne fonctionne pas. J'ai donc utiliser la requete directement dans phpMyAdmin et il me renvoie le message d'erreur indiquée dans mon premier message.
    Et même en utilisant les fonctions de phpMyAdmin pour supprimer une ligne, il me renvoie ce message d'erreur.

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    Reprenons...

    L'erreur que tu reçois :
    MySQL a répondu:
    #1054 - Unknown column 'IDStyle' in 'where clause'
    La requête qui semble en être la cause d'après ton message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETEFROM`musiclesson`.`style`WHERE`style`.`IDStyle`=3
    En dehors du fait qu'il manque un espace entre DELETE et FROM mais l'erreur ne semble pas venir de là, pourquoi précises-tu dans la requête le nom de la BDD (musiclesson) et le nom de la table dans la partie WHERE ?

    Si tu ne travailles que sur une seule bdd, cette requête devrait suffire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DELETE
    FROM style
    WHERE IDStyle = 3
    Remarque au passage que j'ai supprimé ces saloperies d'apostrophes inversées inutiles.

    Maintenant, cette requête va déclencher les deux triggers qui vont supprimer des lignes référençant ce style dans les tables partition et enregistrement.
    Pourquoi ne pas utiliser tout simplement le mécanisme des contraintes de clé étrangères ?

    Création de la table style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE style (
    	IDStyle int(11) AUTO_INCREMENT primary key,
    	nom varchar(20),
    	gamme varchar(20)
    ) Engine=InnoDB
    Création de la table partition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE partition (
    	IDPartition int(3) AUTO_INCREMENT primary key,
    	nom varchar(50),
    	artiste varchar(50),
    	album varchar(50),
    	difficulte int(2),
    	remarque varchar(50),
    	accordage varchar(20),
    	IDStyle int(11) NOT NULL
    ) Engine=InnoDB;
    Ajout de la clé étrangère référençant le style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER TABLE partition
    ADD CONTRAINT FOREIGN KEY fk_style (IDStyle) REFERENCES style(IDStyle) ON DELETE CASCADE;
    Ajout de données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO style (nom, gamme)
    VALUES ('Toccata', 'Ré mineur'), ('Fantaisie', 'Do');
     
    INSERT INTO partition (nom, artiste, album, difficulte, remarque, accordage, IDStyle)
    VALUES ('Toccata et fugue en ré mineur', 'Jean-Sébastien Bach', 'XYZ123', 'Difficile', 'Pour orgue', 'Ré mineur', 1),
    	('Toccata en truc bidule', 'Jean Truc', 'WDS546', 'Fastoche', 'Pour piano', 'Do', 1),
    	('Fantasia', 'Walt Disney', 'WD587', 'Enfantin', 'Multi instruments', 'Mi', 2);
    Supression du style 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DELETE FROM style
    WHERE IDStyle = 2;
    Affichage des données de partition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT p.nom, p.artiste, p.album, p.difficulte, p.remarque, p.accordage,
    	s.nom AS style
    FROM partition p
    INNER JOIN style s ON s.IDStyle = p.IDStyle
    nom 	artiste 	album 	difficulte 	remarque 	accordage 	style
    Toccata et fugue en ré mineur 	Jean-Sébastien Bach 	XYZ123 	0 	Pour orgue 	Ré mineur 	Toccata
    Toccata en truc bidule 	Jean Truc 	WDS546 	0 	Pour piano 	Do 	Toccata
    => La troisième partition insérée du style 2 n'est plus présente.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. Récupérer une information d'une ligne dans une table
    Par Lebas dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/04/2013, 10h24
  2. Colorer une ligne dans une image d'une interface
    Par yasmine2013 dans le forum Interfaces Graphiques
    Réponses: 0
    Dernier message: 27/05/2012, 22h32
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. [E-00] Syntaxe pour insérer une ligne ou une colonne dans une feuille
    Par Benjycool dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/02/2009, 09h27
  5. Réponses: 3
    Dernier message: 29/01/2008, 12h08

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