Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en 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 25/11/2006, 17h24   #1
Membre confirmé
 
Inscription : mars 2004
Messages : 1 187
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 187
Points : 233
Points : 233
Par défaut alter table on delete cascade, erreur syntaxe

Bonjour,

j'ai une reerue de syntaxe sur la commande suivante :

Code :
1
2
3
 
 
ALTER TABLE `lldiffusion_commande_detail` FOREIGN KEY ( `commande` ) REFERENCES `lldiffusion_commande` ( `id` ) ON DELETE CASCADE ON UPDATE NO ACTION ;
l'erreur est la suivante :

#1064 - 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 'FOREIGN KEY (`commande`) REFERENCES `lldiffusion_commande` (`id



pouvez-vous me dire ce qui ne va pas.
sam01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2006, 18h25   #2
Membre Expert
 
Avatar de Alexandre T
 
Inscription : mai 2002
Messages : 1 022
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : mai 2002
Messages : 1 022
Points : 1 123
Points : 1 123
Il manque ADD et le nom de la contrainte devant FOREIGN KEY.

Code :
1
2
3
4
5
ALTER TABLE yourtablename
    ADD [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)
    REFERENCES tbl_name (index_col_name, ...)
    [ON DELETE {CASCADE | SET NULL | NO ACTION | RESTRICT}]
    [ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT}]
__________________
Alexandre T.

PHP5/MySQL5 Codes prêts à l'emploi
30 projets avec codes sources complets pour créer diaporamas photos, chat, arbre généalogique, statistiques de visites, création de graphiques, moteur de recherche, Sudoku etc...

Mes articles
Alexandre T est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2006, 20h45   #3
Membre confirmé
 
Inscription : mars 2004
Messages : 1 187
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 187
Points : 233
Points : 233
quelle est cette notion de CONSTRAINT symbol,
c'est un champ de ma table?
sam01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2006, 20h57   #4
Membre confirmé
 
Inscription : mars 2004
Messages : 1 187
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 187
Points : 233
Points : 233
voilà ce que montre le show create :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
 
CREATE TABLE `lldiffusion_commande_detail` (
 `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
 `commande` int(10) UNSIGNED NOT NULL DEFAULT '0',
 `article` varchar(30) NOT NULL DEFAULT '',
 `marque` varchar(128) NOT NULL DEFAULT '',
 `categorie` varchar(128) NOT NULL DEFAULT '',
 `sous_categorie` varchar(128) NOT NULL DEFAULT '',
 `prix_ht` decimal(10,2) UNSIGNED NOT NULL DEFAULT '0.00',
 `prix_ttc` decimal(10,2) UNSIGNED NOT NULL DEFAULT '0.00',
 `quantite` int(10) UNSIGNED NOT NULL DEFAULT '0',
 `total_ht` decimal(10,2) UNSIGNED NOT NULL DEFAULT '0.00',
 `total_ttc` decimal(10,2) UNSIGNED NOT NULL DEFAULT '0.00',
 PRIMARY KEY  (`id`),
 KEY `commande` (`commande`,`article`)
) TYPE=MyISAM COMMENT='Table qui détaille la commande'
et le deuxième

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
 
CREATE TABLE `lldiffusion_commande` (
 `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
 `client` varchar(128) NOT NULL DEFAULT '',
 `date` timestamp(14) NOT NULL,
 `total_ht` decimal(10,2) UNSIGNED NOT NULL DEFAULT '0.00',
 `total_ttc` decimal(10,2) UNSIGNED NOT NULL DEFAULT '0.00',
 `total_ttc_ref` decimal(10,2) UNSIGNED NOT NULL DEFAULT '0.00',
 `expedition` varchar(128) NOT NULL DEFAULT '',
 `etat` varchar(128) NOT NULL DEFAULT '',
 `type_paiement` varchar(128) DEFAULT NULL,
 `envoi` varchar(128) DEFAULT NULL,
 `mail_envoi` char(2) DEFAULT NULL,
 `frais_port` varchar(30) DEFAULT NULL,
 `frais_port_ref` varchar(30) DEFAULT NULL,
 `dom_tom` char(3) NOT NULL DEFAULT '',
 `contexte` varchar(128) DEFAULT NULL,
 PRIMARY KEY  (`id`),
 KEY `client` (`client`)
) TYPE=MyISAM COMMENT='Table de la commande globale'
sam01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2006, 22h06   #5
Expert Confirmé Sénior
 
Avatar de qi130
 
Homme Pierre
Ingénieur qualité méthodes
Inscription : mars 2003
Messages : 3 726
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 3 726
Points : 4 739
Points : 4 739
Les FK nécessitent la création de tables InnoDB ( les tiennes sont en MyISAM).

Et pour créer de telles tables, le serveur doit être lancé avec InnoDB activé.
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
-----------------------
Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
Usus magister est optimus
qi130 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h29.


 
 
 
 
Partenaires

Hébergement Web