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 :

CASCADE avec Innodb


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de bigltnt
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par défaut CASCADE avec Innodb
    Bonjour je souhaite réaliser 2 tables (util et groupe) avec une table de jointure (appartenir) sur lesquelles je souhaite un UPDATE et DELETE CASCADE.

    **************************************************
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    CREATE TABLE `appartenir` (
    `id_util` varchar(20) NOT NULL default '',
    `id_groupe` int(3) unsigned NOT NULL auto_increment,
    KEY (`id_util`),
    KEY (`id_groupe`), 
    FOREIGN KEY (`id_util`) REFERENCES `util`(`id_util`) ON DELETE CASCADE ON UPDATE CASCADE,
    FOREIGN KEY (`id_groupe`) REFERENCES `groupe`(`id_groupe`) ON DELETE CASCADE ON UPDATE CASCADE
    ) TYPE=InnoDB, ENGINE=MyISAM DEFAULT CHARSET=latin1;
     
    CREATE TABLE `groupe` (
    `id_groupe` int(3) unsigned NOT NULL auto_increment,
    `designation_groupe` varchar(20) NOT NULL default '',
    `description_groupe` varchar(50) default NULL,
    PRIMARY KEY  (`id_groupe`)
    ) TYPE=InnoDB, ENGINE=MyISAM DEFAULT CHARSET=latin1;
     
     
    CREATE TABLE `util` (
    `id_util` varchar(20) NOT NULL default '',
    `titre_util` char(1) NOT NULL default 'M',
    `nom_util` varchar(20) NOT NULL default '',
    `prenom_util` varchar(20) NOT NULL default '',
    `mdp_util` varchar(20) NOT NULL default '',
    PRIMARY KEY  (`id_util`)
    ) TYPE=InnoDB, ENGINE=MyISAM DEFAULT CHARSET=latin1;
    ********************************************************

    Le problème est qu'un DELETE n'applique pas le principe de CASCADE sur mes autres tables. Je ne comprend pas pourquoi. Après quelques tutoriaux, je m'en remet à vous, car je ne comprend pas très bien la différence entre INDEX et KEY, ni l'utilisation de ADD CONSTRAINT.

    Je débute en SQL c'est pas facile

    Merci de votre aide

  2. #2
    Membre éprouvé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 934
    Par défaut
    Bonjour,
    brut de pomme, je pense que l'
    AUTO_INCREMENT
    de la table
    appartenir
    n'est pas judicieux ...
    Et pour la clarté de la présentation, il y eu mieux fallu proposer le script de création de cette table en dernier, puisqu'elle dépend de la bonne création des deux précédentes

  3. #3
    Membre Expert
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Par défaut
    'ENGINE' et 'TYPE' sont synonymes, alors une table qui utilise à la fois InnoDb et MyIsam...

    Et en MyIsam pas de clefs étrangères (du moins en ce qui concerne MySQL) donc pas de cascade.

    Pour vérifier le moteur effectif des tables il y a toujours :

  4. #4
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut
    Citation Envoyé par Sivrît
    Et en MyIsam pas de clefs étrangères (du moins en ce qui concerne MySQL) donc pas de cascade.

    Pour vérifier le moteur effectif des tables il y a toujours :
    +1

    D'ailleurs, le script présenté ne doit pas "passer" si le moteur InnoDB est actif, puisque la table cible des FK est créée en dernier...

  5. #5
    Membre confirmé Avatar de bigltnt
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par défaut Moué moué moué
    Heu et bien merci pour toutes vos réponses !

    En fait je saisis pas tout et apres avoir bidouillé longuement, j'ai opté pour la solution "ca va attendre", qui ma foi, après 3 jours intensifs sur la BDD, me convient très bien et parait un bon compromis.

    Je génère les requêtes en sql pour ce qui aurait du etre de la cascade. C'est moins performant, certes, mais ca me permet d'avancer.

    Je reprendrais mon travail plus en profondeur plus tard, et je vous donnerais des news si je reussi.

    Merci encore !!

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

Discussions similaires

  1. [MySQL] Problème avec InnoDB
    Par Jovial dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 17/08/2006, 16h54
  2. Pb d'insertion avec InnoDB
    Par jinn dans le forum Requêtes
    Réponses: 4
    Dernier message: 25/02/2006, 23h48
  3. pb avec innoDB et config
    Par argv666 dans le forum SQL Procédural
    Réponses: 13
    Dernier message: 12/08/2004, 10h37
  4. Problème de requete avec Innodb
    Par silef dans le forum Requêtes
    Réponses: 3
    Dernier message: 14/04/2004, 12h54
  5. Delete on cascade avec SQL server
    Par fadoua dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/01/2004, 11h02

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