Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/03/2011, 22h04   #1
Invité de passage
 
hautselfes@msn.com hautselfes@msn.com
Inscription : février 2011
Messages : 12
Détails du profil
Informations personnelles :
Nom : hautselfes@msn.com hautselfes@msn.com

Informations forums :
Inscription : février 2011
Messages : 12
Points : 0
Points : 0
Par défaut Problème avec InnoDB

Bonjour,

Je suis en train d'essayer de comprendre l’utilisé et le fonctionnement de ce moteur InnoDB mais rien à faire, je ne comprend pas...

Je dois démontrer son utilité....comment ? Comment faire en pratique pour voir une différence ?


Merci de votre aide Un bon dimanche à tous le monde
Dylanddd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2011, 23h24   #2
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
J'imagine que tu veux comparer InnoDB avec MyIsam. C'est simple avec InnoDB tu peux gérer :
1/ L'intégrité référentielle, cf les contraintes clés étrangères
2/ Les transactions, cf une succession d'opérations insert update delete qui doivent être toutes valides (commit) ou toutes invalidées (rollback) en cas de problèmes/annomalies

Il y a surement plein d'autres avantages à InnoDB comparé à MyIsam, mais ces 2 là sont vraiment primordiales.

D'un point de vue assez critique je dirais que MyIsam est un jouet (mais qui peut avoir son utilité) et InnoDB permet des développements plus "professionnels"

As tu lu le tutoriel du site sur InnoDB ?
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 00h57   #3
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
MySQL... développement professionnel ? Laissez moi rire !!!
A lire sur les inepties du pseudo SGBDR qu'est MySQL : http://blog.developpez.com/sqlpro/p9...udre-aux-yeux/

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est actuellement connecté   Envoyer un message privé Réponse avec citation 01
Vieux 07/03/2011, 15h16   #4
Invité de passage
 
hautselfes@msn.com hautselfes@msn.com
Inscription : février 2011
Messages : 12
Détails du profil
Informations personnelles :
Nom : hautselfes@msn.com hautselfes@msn.com

Informations forums :
Inscription : février 2011
Messages : 12
Points : 0
Points : 0
Merci bien j'ai fait quelques tests assez concluant grâce au tutoriel

Cependant je n'arrive pas la commande ON DELETE SET DEFAULT...

Quelle est l'erreur de syntaxe ? Merci


Code :
ALTER TABLE T_Pull ADD FOREIGN KEY (FK_Couleur) REFERENCES T_Couleur ( ID_Couleur) ON DELETE SET DEFAULT ='1'
Dylanddd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 15h31   #5
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
Il n'y en as pas, comme je vous l'ais dit dans mon pots précédent, MySQL est un SGBRD (hum.. hum...) très limité. ON DELETE SET DEFAULT n'est tout simplement pas implémenté !
C'est pervers, car le parseur ne dit rien, car la syntaxe est validé, mais MySQL ne fait rien... !

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 15h43   #6
Invité de passage
 
hautselfes@msn.com hautselfes@msn.com
Inscription : février 2011
Messages : 12
Détails du profil
Informations personnelles :
Nom : hautselfes@msn.com hautselfes@msn.com

Informations forums :
Inscription : février 2011
Messages : 12
Points : 0
Points : 0
Ahhh merci bien

(encore une autre question pendant que je suis )

j'exécute la requête suivante:

Code :
1
2
3
4
ALTER TABLE T_Pull 
ADD FOREIGN KEY (FK_Couleur) 
    REFERENCES T_Couleur ( ID_Couleur) 
    ON UPDATE CASCADE;
ça passe !

après je veux tester qu'elle fonctionne bien en faisant:

Code :
UPDATE T_Couleur SET ID_Couleur =20 WHERE ID_Couleur = 1
Et là....erreur !!

pouvez-vous m'aider ? Merci encore
Dylanddd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 15h47   #7
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
1) message d'erreur ?
2) version de MySQL ??
3) jeu d'essai ???

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 16h03   #8
Invité de passage
 
hautselfes@msn.com hautselfes@msn.com
Inscription : février 2011
Messages : 12
Détails du profil
Informations personnelles :
Nom : hautselfes@msn.com hautselfes@msn.com

Informations forums :
Inscription : février 2011
Messages : 12
Points : 0
Points : 0
J'utilise EasyPHP pour mes tests

voic le message d'erreur

Citation:
#1452 - Cannot add or update a child row: a foreign key constraint fails (`test_inodb`.`t_pull`, CONSTRAINT `t_pull_ibfk_2` FOREIGN KEY (`FK_Couleur`) REFERENCES `t_couleur` (`ID_Couleur`) ON UPDATE CASCADE)
Le but du jeu est que j'ai 2 tables: T_Pull et T_Couleur

Les pulls ont tous une couleur (relié par FK une T_pull.FK_Couleur qui pointe sur T_Couleur.ID_Couleur)
Dylanddd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 16h59   #9
Invité de passage
 
hautselfes@msn.com hautselfes@msn.com
Inscription : février 2011
Messages : 12
Détails du profil
Informations personnelles :
Nom : hautselfes@msn.com hautselfes@msn.com

Informations forums :
Inscription : février 2011
Messages : 12
Points : 0
Points : 0
Je viens de faire un test:

Au lieu de lancé la requête alter table, j'insère mon update dans ma création de table comme suit:
Code :
1
2
3
4
5
6
7
CREATE TABLE T_Pull ( ID_Pull INT NOT NULL AUTO_INCREMENT,
							Taille VARCHAR(50) NULL,
							FK_Couleur INT(2),
							FOREIGN KEY (FK_Couleur) REFERENCES T_Couleur(ID_Couleur) ON UPDATE CASCADE  /*ON DELETE CASCADE */, /* Le ON DELETE CASCADE permet la supprimer les enregistrement de la table secondaire */
							PRIMARY KEY (ID_Pull)
							)
							TYPE = InnoDB;
Et là je j'exécute:

Code :
UPDATE T_Couleur SET ID_Couleur =20 WHERE ID_Couleur = 1
ça marche !


Mais j'aimerai bien réussi ma requête à l'aide de la commande Alter Table....est-ce possible ? (je vous le remet..)

Code :
ALTER TABLE T_Pull ADD FOREIGN KEY (FK_Couleur) REFERENCES T_Couleur(ID_Couleur) ON UPDATE CASCADE;
Dylanddd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 10h31   #10
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 993
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 993
Points : 18 250
Points : 18 250
Envoyer un message via MSN à CinePhil
Le message d'erreur que tu as rencontré signifie que MySQL a trouvé au moins une ligne où la valeur de la colonne portant la clé étrangère n'a pas de correspondance dans la colonne de référence.

Quand tu ajoutes une clé étrangère à une table déjà remplie, il faut d'abord s'assurer que la colonne clé étrangère ne comprend que des valeurs respectant la contrainte de clé étrangère.

Par contre quand tu crées une table, par définition elle est vide donc pas de problème pour créer la clé étrangère.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h41.


 
 
 
 
Partenaires

Hébergement Web