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

Requêtes MySQL Discussion :

Pb avec ON DELETE CASCADE


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Par défaut Pb avec ON DELETE CASCADE
    Bonjour,

    J'ai créé des tables liées entre elles en utilisant les FOREIGN KEY (monId) REFERENCES t_maTable(monId) ON DELETE CASCADE
    Or, lorsque je supprime une occurence dans la table parente, celle ci n'est pas supprimée dans la table enfant.

    Voici les requetes qui me permettent de créer mes tables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    CREATE TABLE t_matable1(
    idMatable1 INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
    libMatable1 VARCHAR(20));
     
    CREATE TABLE t_matable2(
    idMatable2 INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
    idMatable1 INTEGER NOT NULL,
    FOREIGN KEY (idMatable1) REFERENCES t_matable1(idMatable1)
    ON DELETE CASCADE,
    libMatable2 VARCHAR(50));
    Jusqu'à aujourd'hui, je ne rencontrais pas ce probleme mais j'ai essayé de créer des tables sur les sites perso de free et la suppression de l'occurence ayant pour idMatable1=1 de t_matable1 n'est pas repercutée dans t_matable2.

    J'ai même récupéré des vieilles requetes que j'avais créé par le passé et qui fonctionnaient et le probleme est identique.

    Le probleme est le même lorsque je fais des tests sur mon Localhost via l'interface PhpMyAdmin ou en utilisant des requetes.

    J'utilise WampServer2 (Version de Apache:2.2.11 , Version de PHP:5.3.0 , Version de MySQL:5.1.36 )

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Par défaut Shame on me
    J'ai fini par trouver d'où venait le problème.
    Apres avoir cru un moment que le probleme venait du fait que phpMyadmin m'annonçait Fonctions relationnelles: désactivé et après avoir fait le necessaire pour y remedier (en craigant le pire du coté de chez free car pour modifier le config.inc.cfg là bas...) je me suis rendu compte que mes tables étaient de type MyISAM par défaut j'ai modifié mes requetes comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    CREATE TABLE t_matable1(
    idMatable1 INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
    libMatable1 VARCHAR(20))TYPE=INNODB;
     
    CREATE TABLE t_matable2(
    idMatable2 INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
    idMatable1 INTEGER NOT NULL,
    FOREIGN KEY (idMatable1) REFERENCES t_matable1(idMatable1)
    ON DELETE CASCADE,
    libMatable2 VARCHAR(50))TYPE=INNODB;
    Je ne me souviens pas avoir fait cela par le passé, je vais regarder comment rendre la création de tables dont le type serait INNODB par défaut.
    Quoique ce n'est peut être pas une bonne idée puisque je ne pourrai certainement pas en faire autant chez Free.

    [RESOLU]

  3. #3
    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
    Effectivement, pour bénéficier des clés étrangères avec MySQL, il faut utiliser le moteur InnoDB.
    Si tu ne peux pas l'utiliser chez Free, passe au SGBD Postgesql qui est bien plus conforme à la norme SQL que MySQL.
    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 !

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

Discussions similaires

  1. [10g] Implementation de on delete cascade avec l'utilisation de REF
    Par Rafrafi dans le forum Oracle
    Réponses: 3
    Dernier message: 29/01/2014, 16h32
  2. Réponses: 2
    Dernier message: 25/05/2012, 10h35
  3. Problème DELETE avec jointures ou CASCADE
    Par Aenur56 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 30/04/2010, 16h06
  4. Delete cascade --> problème de temps de traitement
    Par celine31 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 11/01/2006, 12h03
  5. Pb avec ON DELETE/UPDATE CASCADE
    Par trotters213 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 09/03/2005, 11h55

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